-
学习字符流之前首先应该了解的一些问题:<br> 1) 编码问题——不同的字符集有不同的编码,对应着不同的字节编码规则<br> 2)认识文本和文本文件<br> java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码)<br> 文件是byte byte byte ...的数据序列<br> 文本文件是文本(char)序列按照某种编码方案(utf-8,utf-16be,gbk)序列化为byte的存储结果<br> 3)字符流(Reader Writer)---->操作的是文本文本文件<br> 字符的处理,一次处理一个字符<br> 字符的底层任然是基本的字节序列<br> 字符流的基本实现<br> InputStreamReader 完成byte流解析为char流,按照编码解析<br> OutputStreamWriter 提供char流到byte流,按照编码处理 <br> <br> 1:从流的内容的特点上来讲,字符流,就是由字符组成的流<br> 2:字符对于人类而言是易识别的,不同的字符集有不同的字符,为不同的地区范围内的人类使用,当然有些字符在好多地区存在的形式是一致的,比如:0、1、2、3、4、5、6、7、8、9等,但是对于计算机而言,他还是比较容易识别字节,而字节是字符的组成成分,不同的字符集,如果拥有同样的字符,他的字节编码基本是不同的。<br> 3:计算机处理字符的底层也是以处理字节的方式来处理的。 4:java的字符,采用双字节编码,也就是Unicode编码,每一个字符有两个字节组成,表现成字节编码的形式的话就是十六位无符号整数 而java中的文件或者是操作系统中的文件,是一个个字节编码的数据序列 java的文本文件字符序列按照某种编码方案(utf-8,utf-16be,gbk)序列化为byte的存储结果,其本质还是字节的序列。所以,在java中对于字符流的操作本质上还是对于字节流的操作。查看全部
-
比较:查看全部
-
拷贝整个文件时的运行效率:文件拷贝 >> 缓冲拷贝 > 字节拷贝查看全部
-
1、FileOutputStream out = new FileOutputStream("demo/out.dat"); //如果该文件不存在,则直接创建,如果存在,删除后创建 2、FileOutputStream out =new FileOutputStream("demo/out.dat",true); //如果该文件不存在,则直接创建,如果存在,直接在后面追加查看全部
-
1、FileOutputStream out = new FileOutputStream("demo/out.dat"); //如果该文件不存在,则直接创建,如果存在,删除后创建 2、FileOutputStream out =new FileOutputStream("demo/out.dat",true); //如果该文件不存在,则直接创建,如果存在,直接在后面追加查看全部
-
读文件的方式<br> 1:单字节读取,不适合大文件<br> 2:批量字节读取,适合大文件的读取,比较常用,当然,一次控制读取多少字节,要适中一般是1024的倍数 IO读取结束之后一定要关闭资源查看全部
-
IO流:查看全部
-
(1)java文件模型<br> 在硬盘上的文件是byte byte byte字节存储的,是数据的集合<br> (2)打开文件<br> 有两种模式"rw"(读写) "r"(只读)<br> RandomAccessFile raf= new RandomAccessFile(file."rw")<br> 文件指针,打开文件时指针在开头 pointer=0;<br> (3)写方法<br> raf.write(int)--->只写一个字节(后8位),同时指针指向下一个位置<br> 准备再次写入<br> (4)读方法<br> int b = raf.read()--->读一个字节<br> (5) 文件读写完以后一定要关闭(Oracle官方说明)查看全部
-
遍历目录:查看全部
-
IO流(1)查看全部
-
一个类要序列化,就要实现Serializable接口,反过来说,不实现Serializable就不能序列化 当父类没实现Serializable接口,子类继承父类并实现Serializable接口,子类序列化时,父类的部分是没有被序列化的,那么反序列化的时候就没办法找到父类的部分,这时候怎么办呢,就调用父类构造器初始化父类部分。查看全部
-
字符流主要操作文本文件。查看全部
-
输入输出流查看全部
-
注意这个查看全部
-
out.write(a,b,c)查看全部
举报
0/150
提交
取消