JAVA
中定义了两种输入输出流:字符流、字节流。字节流由两个顶层的操象类,
InputStream
、
OutputStream
类构成,每个操象类,都有其具体子类。下表是一些常用的字节流类。
BufferedInputStream
|
缓冲输入流
|
BufferedOutputStream
|
缓冲输出流
|
ByteArrayInputStream
|
从字节数组读取的输入流
|
ByteArrayOutputStream
|
从字节数组写入的输出流
|
DataInputStream
|
包含读取
JAVA
标准数据类型方法的输入流
|
DataOutputStream
|
包含输入
JAVA
标准数据类型方法的输出流
|
FileInputStream
|
读取文件的输入流
|
FileOutputStream
|
写文件的输出流
|
FilterInputStream
|
实现
InputStream
|
FilterOutputStream
|
实现
OutputStream
|
InputStream
|
描述输入流的操象类
|
OutputStream
|
描述输出流的操象类
|
PipedInputStream
|
输入管道
|
PipedOutputStream
|
输出管道
|
PrintStream
|
包含
print()
和
println()
的输出流
|
PushbackInputStream
|
支持向输入流返回一个字节的单字节的
”unget”
的输入流
|
RandomAccessFile
|
支持随机文件的输入输出
|
SequenceInputStream
|
两上或两个以上顺序读取的输入流
|
|
|
字符类由两个类层次结构定义,顶层有两个操象类,
Reader
和
Writer
。这些类处理统一编码的字符流,包含如下具体子类
BufferedReader
|
缓冲输入字符流
|
BufferedWriter
|
缓冲输出字符流
|
CharArrayReader
|
从字符数组中读取数据的输入流
|
CharArrayWriter
|
向字符数组写数据的输出流
|
FileReader
|
读取文件的输入流
|
FileWriter
|
写文件的输出流
|
FilterReader
|
过虑读
|
FilterWriter
|
过虑写
|
InputStreamReader
|
把字节转换成字符的输入流
|
OutputStreamWriter
|
把字符转换成字节的输出流
|
LineNumberReader
|
计数行数的输入流
|
PipedReader
|
输入管道
|
PipedWriter
|
输出管道
|
PushbackReader
|
允许字符返回到输入流的输入类
|
Reader
|
描述字符输入流的操象类
|
StringReader
|
读取字符串的输入流
|
StringWriter
|
写字符串的输出流
|
Writer
|
描述字符流输出的操象类
|
预定义流
所有的
JAVA
程序会自动导入
java.lang.*
包。该包定义了一个
System
的类,该类封装了运行时环境的多方面,能获得与当前系统有关的不同属性。其中包括三个自定义的流变量
,in,out
和
err
。
System.out
是标准的输出流,
System.in
是标准的输入流。
System.err
是标准的错误流,默认是控制台。显然这些流可以重定向任何兼容的输入、输出设备。
读取控制台的输入
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
package com.jdk.io;
import java.io.*;
public class Demo1 {
public static void main(String[] args) throws Exception{
char c;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("
输入
Q
或
q
退出
");
do{
c=(char)br.read();
System.out.println(c);
}while(c!='q');
}
}
这是一个简单的例子,演示了从控制中输入字符的例子,还有
read()
方法的使用。
下面的例子演示了
BufferedReader
类的
readline()
方法使用
package com.jdk.io;
import java.io.*;
public class Demo1 {
public static void main(String[] args) throws Exception{
String c;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("
输入
Q
或
q
退出
");
do{
c=br.readLine();
System.out.println(c);
}while(!"stop".equals(c));
}
}
向控制台输出
向控制台输出通常由
system.out.println()
来完成,它是由
printStream
(
System.out
引用的对象类型)来定义的。心管
System.out
是一个字节流的输出,用它来作简单程序的输出是可行的,
PrintStream
是从
OutputStream
派生出来的,它实了
writer
方法,用来向控制台输出一个字符
(char)
。一般不常用
writer
()向控制台输出,而用
print()
或
println()
。
PrintWriter
类
Printwriter
流是基于字符串的,它支持
Object
的
print
和
println
,对于不同的类型,它会自动调用
toString()
转换成字符串来输出。如:
package com.jdk.io;
import java.io.*;
public class Demo2 {
/**
* @param args
*/
public static void main(String[] args) {
PrintWriter pw=new PrintWriter(System.out,true);
pw.println("this a String");
pw.println(new Integer("333"));
}
}
文件的读写
java
允许字符形式的使用字节文件流。两个最常用的类就是
FileInputSteam
、
FileOutputStream
这两个类,为打开文件,你只需要创建两个类中其中一个的对象即可。下面是一个例子:
package com.jdk.io;
import java.io.*;
public class ShowFile {
public static void main(String[] args) throws Exception{
int i;
FileInputStream fis=null;
try{
fis=new FileInputStream(args[0]);
}catch(Exception e){
e.printStackTrace();
}
do{
i=fis.read();
if(i!=-1){System.out.println((char)i);}
}while(i!=-1);
}
}
FileInputStream
实现从文件输入内容。
posted on 2006-10-07 20:52
有猫相伴的日子 阅读(4412)
评论(1) 编辑 收藏 所属分类:
jdk