博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java io理解
阅读量:7099 次
发布时间:2019-06-28

本文共 1270 字,大约阅读时间需要 4 分钟。

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来写。

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

 

 

转载于:https://www.cnblogs.com/liyang31tg/p/3540213.html

你可能感兴趣的文章
HDU 4916 树形dp
查看>>
远程数据库迁移数据
查看>>
ZH奶酪:LAMP环境中如何重新部署一个Yii2.0 web项目
查看>>
一些有用的java 框架
查看>>
访问不了firefox附加组件页面怎么办
查看>>
Docker image 镜像介绍
查看>>
Java线程池
查看>>
ArrayList,LinkedList,Vector,Stack之间的区别
查看>>
Freemarker常用技巧(二)
查看>>
2.C#中通过委托Func消除重复代码
查看>>
[转] 基于PHP Stream Wrapper开发有趣应用场景
查看>>
JS获取屏幕大小
查看>>
hdu2222-Keywords Search 【AC自动机】
查看>>
Jsp使用HttpSessionBindingListener实现在线人数记录
查看>>
SQL中的等号、IN、LIKE三者的比较
查看>>
JSPatch 成长之路
查看>>
vuejs学习网站推荐
查看>>
如何在Fedora或CentOS上使用Samba共享
查看>>
乐视mysql面试题
查看>>
常用文件扩展名
查看>>