IO的初步理解(二)
2013-10-08 11:19
288 查看
类型 | 字符流 | 字节流 |
---|---|---|
File(文件) | FileReader FileWriter | FileInputStream FileOutputStream |
Memory Array | CharArrayReader CharArrayWriter | ByteArrayInputStream ByteArrayOutputStream |
Memory String | StringReader StringWriter | -- |
Pipe(管道) | PipeReader PipeWriter | PipedInputStream PipedOutputStream |
FileWriter示例:
public static void main(String[] args) { FileWriter fw = null; try { fw = new FileWriter("d:\\1.txt");//在D盘下寻找1.txt文件,如果没有则新建一个 for(int c=0;c<=50;c++){ fw.write(c);//将打印前50个字符 } fw.close();//关闭连接 } catch (IOException e1) { e1.printStackTrace(); System.out.println("文件写入错误"); System.exit(-1); } }
这时打印出来的是Unicode编码的前50个编码打印到1.txt中。
FileReader示例:
public class TestFileReader { public static void main(String[] args) { FileReader fr = null; int c = 0; try { fr = new FileReader("d:\\FileReader.java"); int ln = 0; while ((c = fr.read()) != -1) { System.out.print((char)c);//强制转换成char型 } fr.close(); } catch (FileNotFoundException e) { System.out.println("找不到指定文件"); } catch (IOException e) { System.out.println("文件读取错误"); } }
这时的程序中的中文就能正常打印了。
总结:节点流是将文件中的信息直接不加以任何改变的读取或者输出出来, 字节流是将文件中的信息一个字节一个字节的读取或者是写入,这时要注意像中文等文字在编码中是占据了两个字节的位置,这时候字节流不能将文件中的一部分信息准确的读取或者写入,这时候就要采用字节流了。
处理类型 | 字符流 | 字节流 |
Buffering | BufferedReader BufferedWriter | Bufferedlnputstream Bufferedoutputstream |
Filtering | FilterReader FilterWriter | Fllterlnputstream FilterOutputstream |
Converting between bytesand character | InputStreamWriter OutputStreamWriter | |
Object Serialization | Objectlnputstream ObjectOutputstream | |
Data conversion | Datalnputstream DataOutputstream | |
Counting | LineNumberReader | LineNumberInputStream |
Peeking ahead | PusbackReader | PushbackInputStream |
Printing | PrintWriter | PrintStream |
缓冲流要"套接"在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法。
缓冲流BufferedInputStream示例:
public static void main(String[] args) { try { FileInputStream fis = new FileInputStream("d:\\World.java");//以字节的方式读取文件中的内容 BufferedInputStream bis = new BufferedInputStream(fis);//将fis放入缓冲区里 int c = 0; System.out.println(bis.read()); System.out.println(bis.read()); bis.mark(100);//从第100个开始读 for(int i=0;i<=10 && (c=bis.read())!=-1;i++){ System.out.print((char)c+" ");//如果不加强制转换将打印数字 } System.out.println(); bis.reset();回到第100的标记点上 for(int i=0;i<=10 && (c=bis.read())!=-1;i++){ System.out.print((char)c+" ");//如果不加强制转换将打印数字 } bis.close();//关闭连接 } catch (IOException e) {e.printStackTrace();} }
缓冲流BufferedWriter,BufferedReader示例:
public static void main(String[] args) { try { BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\1.txt"));//new出的FileWriter时就准备往里面写数据了,但是感觉这样直接使用不是很方便,于是在外面加上一个处理流BufferedWriter。这个加上的处理流是带缓冲区的。 BufferedReader br = new BufferedReader(new FileReader("d:\\1.txt")); String s = null; for(int i=1;i<=100;i++){ s = String.valueOf(Math.random());//产生一个随机数,然后把这个随机数转换为字符串 bw.write(s); bw.newLine();//往文件里加入一个换行符,意义是每写一个字符串之后就加入一个换行符 } bw.flush();//将缓冲的文件全部放入文件里面去 while((s=br.readLine())!=null){//br.readLine()将一行中的内容当作字符串传递出来 System.out.println(s); } bw.close(); br.close();//关闭两个连接 } catch (IOException e) { e.printStackTrace();} }
相关文章推荐
- 对IO的初步理解与使用
- IO的初步理解(三)
- IO初步理解(一)
- 对非关系型数据库(NoSQL)的初步理解
- 理解XML Schema: XML Schema初步 (一)
- 关于IO从白痴到略懂的一些理解
- hashMap 临界值初步理解
- Java参数传递造成参数值改变的情况--值传递和引用传递的初步理解
- 附加到进程调试理解(初步)
- io理解
- 初步理解client/server
- 写一点opengl的初步入门理解
- javascript之初步理解闭包
- ajax代理Proxy初步理解
- c与指针初步理解
- RestFul的初步理解
- 【转】WINDOWS IO完成端口的一些内部细节理解
- 理解XML Schema: XML Schema 初步 (I)
- [转]android的文件系统结构及其引导过程的初步理解
- Winsock的IOCP的初步应用与理解