JavaPPT第六章输入输出流

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. BufferedReader中重载方法read()和readLine() ➢ read()方法
int read() throws IOException 该方法每次执行都从输入流中读取一个字符,然后以整型形 式返回。当遇到流的尾时,返回-1。 ➢ readLine()方法 String readLine() throws IOException 该方法每次执行从输入流中读取一行字符,然后以String形 式返回。当遇到流的尾时,返回null。
2
2.字符流 字符流(character stream)为字符的输入和输出处理提供了方便。 字符流的顶层有两个抽象类:Reader和Writer。这两个抽象类定义
了实现其他流类的关键方法。最重要的两种方法是read()和write(), 它们分别进行字符的读写,都被派生的流类重载。
下面是几个常用的具体的字符流类:
对文件操作时,其输入输出流分别是FileReader和FileWriter。 二、举例
例1:创建文件,即从键盘上输入数据,写入磁盘文件。
16
import java.io.*; import java.util.*; class FileW {
public static void main(String args[]) {
System.out.println(s);
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
catch(IOException e)
{ System.out.println("there are some wrong in I/O");
while(st.hasMoreTokens())
{field[fieldcount]=st.nextToken();
fieldcount++;
}
s=field[0];
a=Integer.parseInt(field[1]);
b=Float.parseFloat(field[2]);
c=(char)ss.read();
制类型转换
7
System.out.println(s); System.out.println(a); System.out.println(b); System.out.println(c); } catch(IOException e)
异常类型可以是 Exception
{ System.out.println("there are some wrong in I/O"); }
3
三、预定义流 所有的Java程序运行时自动导入java.lang包,这个包定义了一
个名为System的类,该类封装了运行时环境的多个方面。System还 包含有3个预定义的字节流变量in、out和err。他们的定义如下:
public static InputStream in; public static PrintStream out; public static PrintStream err;
6
import java.io.*; public class inputFIS {
public static void main(String args[]) {
BufferedReader ss =new BufferedReader(new InputStreamReader(System.in));
➢ BufferedReader :缓冲输入字符流 ➢ BufferedWriter :缓冲输出字符流 ➢ FileReader :读取文件的输入流 ➢ FileWriter :写文件的输出流 ➢ InputStreamReader :把字节转换成字符的输入流 ➢ LineNumberReader :计算行数的输入流 ➢ OutputStreamWriter :把字符转换成字节的输出流 ➢ PrintWriter :包含print()和println()的输出流 ➢ Reader :描述字符流输入的抽象类 ➢ Writer :描述字符流输出的抽象类
在Java语言中,输入与输出完全基于“流”这个概念。Java输入输 出的流式接口为复杂而繁重的I/O编程任务提供了一个简洁的抽象。
6.1 输入输出基础
一、流的概念 Java程序通过流来完成输入/输出。流通过Java的输入/输出系统与
物理设备链接。输入流能够抽象多种不同类型的输入:从磁盘文件、从 键盘或从网络套接字。同样,一个输出流可以输出到控制台,磁盘文件 或相连的网络。 二、字节流和字符流
}
}
}
12
二、控制台输出
Java使用System.out向控制台写数据,这种写数据方式是字 节流的方式,另外,Java还提供基于字符的写操作,这个类是 PrintWriter.
PrintWriter定义了多个构造函数,下面是常用的一个: PrintWriter(OutputStream outputStream, Boolean flushOnNewline) 其中,flushOnNewline控制Java是否在println()方法被调用 时刷新输出流。如果flushOnNewline为true,刷新自动发生,否 则,则不发生。
String s,input; int a; float b; char c; try {
input=ss.readLine(); s=input; a=Integer.parseInt(input); b=Float.parseFloat(input); c=(char)ss.read();
必须进行强
InputStreamReader(InputStream inputStream) 可以这样使用:InputStreamReader(System.in)
5
综上所述,下面的代码创建了与键盘相连的BufferedReader 对象:
BufferedReader br =new BufferedReader(new InputStreamReader(System.in))
}
}
注:
➢ 捕获的异常类型是Exception时,若输入数据不符合parse方法 的参数要求,该异常会被捕获到。
➢ 捕获的异常类型是IOException时,若输入的数据不符合parse
方法的参数要求,该异常不会被捕获到,出现运行时错误。
8
程序运行时,从键盘输入:
1234 (若输入非数字串则有运行错误)
String s,input; //暂时容纳输入数据的临时字符串数组
String field[ ]=new String[4]; int a,fieldcount=0; float b; char c;
11
try{
input=ss.readLine(); //读取一行
StringTokenizer st=new StringTokenizer(input,":");
4
6.2 控制台输入输出
一、控源自文库台输入 1. BufferedReader缓冲输入字符流类
在Java 2中,读取控制台输入的首选方法应该是字符流,它使程序容 易符合国际标准,并且易于维护。控制台输入由从System.in读取数据来 完成。 BufferedReader的构造函数用法如下:
BufferedReader(Reader inputReader) 其中, inputReader是链接被创建的BufferedReader实例的流。 Reader是一个抽象的类,InputStreamReader是Reader的一个具体子类, 该子类将字节转换成字符。 InputStreamReader的构造函数为:
在Java 2中,定义了两种类型的流:字节类和字符类。 1.字节流
字节流(byte stream)为处理字节的输入和输出提供了方便的方 法。可以使用字节流读取或书写二进制数据。
1
字节流由两个类层次结构定义。 在顶层有两个抽象类:InputStream和OutputStream。 这两个抽象类定义了实现其他流类的关键方法。最重要的两种方法 是read()和write(),它们分别对数据的字节进行读写,这两种方法在 InputStream和OutputStream中被定义为抽象方法,它们都被派生的流 类重载。 下面是几个常用的具体的字节流类: ➢ BufferedInputStream:缓冲输入流 ➢ BufferedOutputStream:缓冲输出流 ➢ FileInputStream:读取文件的输入流 ➢ FileOutputStream:写文件的输出流 ➢ InputStream:描述流输入的抽象类 ➢ OutputStream:描述流输出的抽象类 ➢ PrintStream:包含print()和println()的输出流 ➢ RandomAccessFile:支持随机文件输入/输出
14
例:从键盘上输入任意两个整数,求它们的和。
import java.io.*; public class InputDemo { public static void main(String args[]) {
BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw=new PrintWriter(System.out,true); int a,b,c; try{ a=Integer.parseInt(read.readLine()); b=Integer.parseInt(read.readLine()); c=a+b; pw.println("c="+c);
wrh
输出
1234 字符串
1234
整型数据
1234.0 实型数据
w
字符型数据
9
3. 每行输入多个数据项 上面的例子采用逐行读取字符的方法,然后把每行数据作为输入赋
给一个变量。如果希望每行数据包含多个子数据项,Java提供了专门的 类StringTokenizer来分解一个包含分隔符号的大的字符串。用法如下:
13
import java.io.*; class PrintWriterDemo {
public static void main(String args[]) {
PrintWriter pw=new PrintWriter(System.out,true); String s="this is a test"; int i=-7; float f=23.4f; pw.println(s); pw.println(i); pw.println(f); } }
person people=new person();
String read; int i; BufferedReader input =
} catch(IOException e) { pw.println("there are some errors");} } }
15
6.3 文件的读写
一、常用的类 对文件的读写操作和标准输入输出是十分类似的,需要注意的是要
采用专门对文件操作的流,并应在合适的时候关闭流,否则系统资源无 法得到释放。
10
import java.io.*; import java.util.*; public class inputFIS {
public static void main(String args[]) {
BufferedReader ss = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st=new StringTokenizer(line,“:”) 这里的字符串line的分隔符指定为“:” 。也可指定多个分隔符, 如果未指定分隔符,则使用缺省分隔符,即“空格”,“TAB”,”回 车”。 StringTokenizer st=new StringTokenizer(line) StringTokenizer有两个方法,nextToken()返回下一个标记, hasMoreTokens()返回后面是否还有标记。
相关文档
最新文档