一)
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流,按照编码处理
InputStreamReader
public InputStreamReader(InputStream in)
- 创建一个使用默认字符集的 InputStreamReader。
-
-
public InputStreamReader(InputStream in, CharsetDecoder dec)
- 创建使用给定字符集解码器的 InputStreamReader。
-
-
-
public int read(char[] cbuf, int offset, int length) throws IOException
- 将字符读入数组中的某一部分。
-
-
OutputStreamWriter
public OutputStreamWriter(OutputStream out)
- 创建使用默认字符编码的 OutputStreamWriter。
-
public OutputStreamWriter(OutputStream out, Charset cs)
- 创建使用给定字符集的 OutputStreamWriter。
-
public void write(String str, int off, int len) throws IOException
- 写入字符串的某一部分。
-
-
FileReader
public FileReader(String fileName) throws FileNotFoundException
- 在给定从中读取数据的文件名的情况下创建一个新 FileReader。
-
-
FileWriter
public FileWriter(String fileName, boolean append) throws IOException
- 根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。
-
- 字符流过滤器
- BufferedReader ----->readLine 一次读取一行
- BufferedWriter/PrintWriter ------->写一行
-
-
BufferedReader
public BufferedReader(Reader in, int sz)
- 创建一个使用指定大小输入缓冲区的缓冲字符输入流。
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("e:\\test.txt")));<span style="font-family: Arial, Helvetica, sans-serif;">String line;</span>
-
while((line=br.readLine())!= null) { System.out.println(line); }
-
-
-
public String readLine() throws IOException
- 读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。
-
BufferedWriter
public BufferedWriter(Writer out, int sz)
- 创建一个使用给定大小输出缓冲区的新缓冲字符输出流。
-
public void write(String str) throws IOException
- 写入字符串。
-
-
-
PrintWriter
public PrintWriter(OutputStream out, boolean autoFlush)
-
通过现有的 OutputStream 创建新的 PrintWriter。此便捷构造方法创建必要的中间 OutputStreamWriter,后者使用默认字符编码将字符转换为字节。
public PrintWriter(String fileName) throws FileNotFoundException
-
创建具有指定文件名称且不带自动行刷新的新 PrintWriter。此便捷构造方法创建必要的中间
OutputStreamWriter
,后者将使用此 Java 虚拟机实例的 默认 charset 进行字符编码。
-
通过现有的 OutputStream 创建新的 PrintWriter。此便捷构造方法创建必要的中间 OutputStreamWriter,后者使用默认字符编码将字符转换为字节。
-
public void print(String s)
-
打印字符串。如果参数为
null
,则打印字符串"null"
。否则,按照平台的默认字符编码将字符串的字符转换为字节,并完全以
方法的方式写入这些字节。write(int)
-
public void println(String x)
-
打印 String,然后终止该行。此方法的行为就像先调用
然后调用print(String)
一样。println()
-
打印字符串。如果参数为
-
-
-
-
-
-