- 字符流
- 1)编码问题
- 2)认识文本和文本文件
- java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码)
- 文件是byte byte byte.....的序列
- 文本文件是文本(char)序列按照某种编码方案(utf-8,utf-16be,gbk)序列化位byte的存储结果
- 3)字符流(Reader Writer)------>操作是文本、文本文件
- 字符的处理,一次处理一个字符
- 字符的底层仍然是基本的字节序列
- 字符流的基本实现
- InputStreamReader 完成byte流解析为char流,按照编码解析
- OutputStreamWriter 提供char流到byte流,按照编码处理
- FileReader/Filewriter文件的读取和写入
- BufferedReader/BufferedWriter
- PrintlnWriter
- BufferedWriter和PrintlnWriter的区别
- BufferedWriter在写入时,不会自动换行,而PrintlnWriter会自动换行
-
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class IOUtil { public static void main(String[] args) throws IOException { FileInputStream in = new FileInputStream("e://javaio//日记.txt"); InputStreamReader isr = new InputStreamReader(in,"gbk");//默认项目的编码 FileOutputStream out = new FileOutputStream("e://javaio//日记3.txt"); OutputStreamWriter osw = new OutputStreamWriter(out,"gbk"); /*int c; while((c = isr.read()) != -1){ System.out.print((char)c); } */ /** * 批量读取,放入buffer这个字符数组中,从第0个开始放置,最多放置buffer.length个 * 返回的是读到的字符个数 */ char[] buffer = new char[8 * 1024]; int b; while((b = isr.read(buffer, 0, buffer.length)) != -1){ String s = new String(buffer,0,b); System.out.print(s); osw.write(buffer,0,b); osw.flush(); } isr.close(); osw.close(); in.close(); out.close(); } }
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; public class BrAndBf { public static void main(String[] args) throws IOException { // 对文件进行读写操作 BufferedReader br = new BufferedReader( new InputStreamReader( new FileInputStream("e:\\javaio\\日记.txt"))); BufferedWriter bw = new BufferedWriter( new OutputStreamWriter( new FileOutputStream("e:\\javaio\\日记5.txt"))); PrintWriter pw = new PrintWriter("e:\\javaio\\日记6.txt"); String line; while((line = br.readLine()) != null){ System.out.println(line);//一次读一行,并不能识别换行 bw.write(line); //单独写出换行操作 bw.newLine(); bw.flush(); pw.println(line); pw.flush(); } br.close(); bw.close(); pw.close(); } }
import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class FrAndFwDemo { public static void main(String[] args) throws IOException { FileReader fr = new FileReader("e:\\javaio\\日记.txt"); FileWriter fw = new FileWriter("e:\\javaio\\日记4.txt"); char[] buffer = new char[2 * 1024]; int c; while((c = fr.read(buffer,0,buffer.length))!= -1){ fw.write(buffer,0,c); fw.flush(); } fr.close(); fw.close(); } }
Java IO——字符流
最新推荐文章于 2020-02-26 01:18:41 发布