首页 > 其他 > 详细

java io理解

时间:2014-02-08 16:26:13      阅读:436      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
InputStream
OutputStream //这2个是一个一个字节的读和写。
Reader
Writer //这2个是一个一个字符的读和写。

这四个抽象类,

@Test
public void testoud() throws IOException {
  File f=new File("E:\\eclipse-jee-kepler-SR1-win32\\workspace1\\io_excetpion\\src\\com\\yinhai\\liyang\\test.java");
  Reader in=new FileReader("E:\\eclipse-jee-kepler-SR1-win32\\workspace1\\io_excetpion\\src\\com\\yinhai\\liyang\\test.java");
  char ca[]=new char[(int) f.length()];//f.length()这个返回的是此文件的大小,也就是字节大小,当这个文件中有几个汉字的时候就会大几个空格
  int a=in.read(ca);
  String str=new String(ca,0,a);      //所以在这里要用a来截断
  System.out.println(str);
  in.close();

}

@Test
public void testoud1() throws IOException {
  File f=new File("E:\\eclipse-jee-kepler-SR1-win32\\workspace1\\io_excetpion\\src\\com\\yinhai\\liyang\\test.java");
  InputStream in=new FileInputStream("E:\\eclipse-jee-kepler-SR1-win32\\workspace1\\io_excetpion\\src\\com\\yinhai\\liyang\\test  .java");
  byte[] ca=new byte[(int) f.length()];   //这里就不会出现上面这种情况
  int a=in.read(ca);
  String str=new String(ca);
  System.out.println(str);
  in.close();
}

书中有一句话:在字符流的操作中,所有字符都是在内存中形成的

由此可以理解为Reader的时候,先读一个字节,然后能成功转换成字符的话就是一个字符,不能的话再读一个字节来转成字符,这样就解决了汉字占2个字节的问题。

Writer写也一样,能转换成一个byte的就直接写,不能的就转换成2个byte来写。

总结:字符流的实质还是字节流。



bubuko.com,布布扣

java io理解

原文:http://www.cnblogs.com/liyang31tg/p/3540213.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!