标签:
1. 流式IO结构
下图只给出了较为常用的IO流的类图结构
Java的IO流主要分为两大类:字节流和字符流,字节流以InputStream和OutputStream为基础类,字符流以Reader和Writer为基础类。
2. 字节流
字节流以InputStream和OutputStream为基础类,常用的子类流有:
FileInputStream和FileOutputStream用于从文件读写二进制数据;
FilterInputStream和FilterOutputStream即过滤流,过滤流可以嵌套基本二进制输入输出流或者其他过滤流,增强处理输入输出流的处理能力。其中BufferedInputStream和BufferedOutputStream流提供了读写缓冲的功能,DataInputStream和DataOutputStream提供了对字节流读写的更多支持(如:读写二进制整数等);
ObjectInputStream和ObjectOutputStream用于读写对象,对象所属的类需要实现Serializable接口,现在更常用的方式应该是使用JSON格式来传递对象;
读写二进制文件通常使用如下嵌套流的方式:
new DataInputStream(new BufferedInputStream(new FileInputStream(new File(filename))));
new DataOutputStream(new BufferedOutputStream(new FileOutputStream(new File(filename))));
3.字符流
字符流以Reader和Writer为基础类,常用的子类有:
FileReader和FileWriter类用于从文件读写文本数据;
BufferedReader和BufferWriter用于读写文本数据,提供了读写缓冲的功能,通常用于包装其他的字符输入输出流;
BufferedReader类中常用的方法是readLine读入一行数据,然后使用String类的相关API处理,更常用的方式是使用java.util.Scanner类来对读字符流提供更多支持;
PrintWriter类对写字符流提供了更多支持;
读写文本文件通常使用如下嵌套流的方式:
new BufferedReader(new FileReader(new File(...));
new PrintWriter(new BufferedWriter(new FileWriter(new File(...))));
4. 字节流和字符流的转换
字节流转换成字符流使用InputStreamReader:
new BufferedReader(new InputStreamReader(inputStream));
字符流转换成字节流使用OutputStreamWriter:
new BufferedWriter(new OutputStreamWriter(outputStream));
5. ZIP文件输入输出流
Java中提供了对zip压缩文件读写支持,相关类在java.util.zip包中。
ZipInputStream类和ZipOutputStream分别继承成自java.io.FilterInputStream类和java.io.FilterOutputStream类,用于读写zip压缩文件。
ZipEntry类用于表示zip文件中的一个条目,读写zip文件,首先创建ZipInputStream或者ZipOutputStream,然后使用getNextEntry方法获取zip文件中的每个被压缩的文件,依次处理,每个处理完成一个条目之后,调用closeEntry方法关闭当前条目,处理完整个zip文件后,调用close方法关闭整个zip文件。
下面给出一个依次打印zip文件中所有文件内容的例子:
ZipInputStream zin = new ZipInputStream(new FileInputStream("test.zip")); ZipEntry zipEntry; Scanner scanner; while( (zipEntry = zin.getNextEntry() ) != null ) { scanner = new Scanner(zin); System.out.println(zipEntry.getName()); //输出文件名称 //输出文件内容 while(scanner.hasNextLine()) { System.out.println(scanner.nextLine()); } zin.closeEntry(); } zin.close();
标签:
原文地址:http://www.cnblogs.com/jqctop1/p/4734625.html