字节流
InputStream的作用是用来表示那些从不同数据源产生输入的类
类 功能 构造器参数 ByteArrayInputStream 允许将内存中的缓冲区当作InputStream使用 缓冲区(字节数组) StringBufferInputStream(弃用) 将String转换成InputStream 字符串 FileInputStream 用于从文件读取信息 字符串,表示文件名、文件或FileDescriptor对象 PipedInputStream 产生用于写入相关PipedOutputStream的数据,实现”管道化概念” PipedOutStream SequenceInputStream 将两个或多个InputStream对象转换成单一InputStream 两个InputStream对象或一个容纳InputStrean对象的容器Enumeration FilterInputStream 抽象类,作为装饰器的接口,为其他的InputStream类提供有用功能 见下下表
OutputStream类型
该类别的类决定了输出所要去往的目标
类 功能 构造器参数 ByteArrayOutputStream 见上表 见上表 FileOutputStream PipedOutputStream FilterOutputStream
类 功能 构造器参数 DataInputStream 从流读取基本数据类型(int, char等) InputStream BufferedInputStream 避免每次读取时都得进行实际写操作,代表使用缓冲区 LineNumberInputStream(弃用) 跟踪输入流中的行号,可调用getLineNumber()和setLineNumber(int) PushbackInputStream 具有”能弹出一个字节的缓冲区”.可以将读到的最后一个字符回退 InputStream,通常作为编译器的扫描器
通过FilterOutputStream从OutputStream读取数据
类 功能 构造器参数 DataOutputStream PrintStream BufferedOutputStream
字符流
Reader和Writer
提供兼容Unicode与面向字符的I/O功能
来源和去处:Java 1.0类 相应的Java 1.1类 InputStream Reader (适配器:InputStreamReader) OutputStream Writer (适配器:OutputStreamReader) FileInputStream FileReader FileOutputStream FileWriter StringBufferInputStream(弃用) StringReader (无相应的类) StringWriter ByteArrayInputStream CharArrayReader ByteArrayOutputStream CharArrayWriter PipedInputStream PipedReader PipedOutputStream PipedWriter
FilterReader和FilterWriter
过滤器: Java 1.0类 相应的 Java1.1类 FilterInputStream FilterReader FilterOutputStream FilterWriter BufferedInputStream BufferdReader BufferedOutputStream BufferedWriter DataInputStream DataInputStream(需要使用Readline()时为BufferdReader) PrintStream PrintWriter LineNumberInputStream(弃用) LineNumberReader StreamTokenizer StreamTokenizer PushbackInputStream PushbackReader
未发生变化的类()
没有相应类 DataOutputStream File RandomAccessFile SequenceInputStream
BufferReader in = new BufferReader(new FileReader(filename));
String s = in .readLine();
in .close();
StringReader in = new StringReader("asdfg" );
int c;
while ((c = in .read())!=-1 )
System.out .print((char )c)
String s = "asdfg" ;
DataInputStream in = new DataInputStream(new ByteArrayInputStream(s.getBytes()));
while (in .available()!=0 )
System.out .println((char )in .readByte());
RandomAccessFile类(转)
该对象并不是流体系中的一员,其封装了字节流,同时还封装了一个缓冲区(字符数组),通过内部的指针来操作字符数组中的数据。 该对象特点:
该对象只能操作文件,所以构造函数接收两种类型的参数:a.字符串文件路径;b.File对象。 该对象既可以对文件进行读操作,也能进行写操作,在进行对象实例化时可指定操作模式(r,rw)
注意:该对象在实例化时,如果要操作的文件不存在,会自动创建;如果文件存在,写数据未指定位置,会从头开始写,即覆盖原有的内容。 可以用于多线程下载或多个线程同时写数据到文件。
RandomAccessFile rf = new RandomAccessFile(file, "r" );
rf.read();
RandomAccessFile rf = new RandomAccessFile(file, "rw" );
rf.write(2 );
NIO
http://blog.youkuaiyun.com/u013256816/article/details/51457215#t3