从字符输入流中读取文本,缓冲字符以便 提供字符、数组和行的有效读取。
可以指定缓冲区大小,也可以使用默认大小。 这 默认值对于大多数用途来说足够大
特别的我们多了readLine方法可以读一整行
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class demo11 {
public static void main(String[] args) throws IOException {
String path = "C:\\Users\\Syf200208161018\\Desktop\\新建文本文档.txt";
BufferedReader reader = new BufferedReader(new FileReader(path));
String line = null;
while ((line= reader.readLine())!=null){
System.out.println(line);
}
reader.close();
}
}
将文本写入字符输出流,缓冲字符以便 提供单个字符、数组和字符串的高效写入。
可以指定缓冲区大小,也可以接受默认大小。 对于大多数用途,默认值足够大。
提供了一个 newLine() 方法,它使用平台自己的概念 由系统属性定义的行分隔符 line.separator. 并非所有平台都使用换行符 (‘\n’) 来终止行。 因此,最好调用此方法来终止每个输出行 直接写一个换行符。
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class demo12 {
public static void main(String[] args) throws IOException {
String path = "C:\\Users\\Syf200208161018\\Desktop\\neww.txt";
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(path));
bufferedWriter.write("撒旦卡啥的adsadhsahdkk");
bufferedWriter.newLine();
bufferedWriter.write("565446464");
bufferedWriter.flush();
bufferedWriter.close();
}
}
封装了print()和println()方法
将对象的格式化表示打印到文本输出流。 这个 类实现了所有 print中发现的方法 PrintStream. 它不包含写入原始字节的方法,其中 程序应该使用未编码的字节流。
不像 PrintStream类,如果启用了自动刷新 只有当其中一个 println, printf, 或者 format方法被调用,而不是每当换行符 恰好是输出。 这些方法使用平台自己的线概念 分隔符而不是换行符。
此类中的方法从不抛出 I/O 异常,尽管它的一些 构造函数可能。 客户可以询问是否有任何错误 通过调用发生 checkError().
此类始终将格式错误且无法映射的字符序列替换为 字符集的默认替换字符串。 CharsetEncoder 使用 类应该在更多时 需要对编码过程进行控制
import entity.Stu;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
public class demo13 {
public static void main(String[] args) throws FileNotFoundException {
String path = "C:\\Users\\Syf200208161018\\Desktop\\neww.txt";
Stu stu = new Stu("zhansgan",55,102.31);
PrintWriter printWriter = new PrintWriter(path);
printWriter.println(209.31);
printWriter.println("helloword");
printWriter.write("new");
printWriter.print(2012);
printWriter.close();
}
}
可将字节流转换为字符流!!!
可以设置字符编码的方式!!!
InputStreamReader 是从字节流到字符流的桥梁:它 读取字节并使用指定的字符将它们解码为字符 charset. 它使用的字符集 可以通过名称指定,也可以明确给出,或者平台的 可以接受默认字符集。
每次调用 InputStreamReader 的 read() 方法之一可能 导致从底层字节输入流中读取一个或多个字节。 为了能够有效地将字节转换为字符,可以使用更多字节 从底层流中提前读取,而不是满足 当前读取操作。
为了获得最高效率,请考虑将 InputStreamReader 包装在 缓冲阅读器
import java.io.*;
public class demo14 {
public static void main(String[] args) throws IOException {
String path = "C:\\Users\\Syf200208161018\\Desktop\\neww.txt";
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(path), "UTF-8");
int count = 0;
while ((count= inputStreamReader.read())!=-1){
System.out.print((char) count);
}
inputStreamReader.close();
}
}
OutputStreamWriter 是从字符流到字节流的桥梁: 写入它的字符使用指定的字节编码为 charset. 它使用的字符集 可以通过名称指定,也可以明确给出,或者平台的 可以接受默认字符集。
每次调用 write() 方法都会导致编码转换器 在给定的字符上调用。 结果字节累积在一个 写入底层输出流之前的缓冲区。 请注意, 传递给 write() 方法的字符不会被缓冲。
为了获得最高效率,请考虑将 OutputStreamWriter 包装在 BufferedWriter 以避免频繁的转换器调用。
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class demo15 {
public static void main(String[] args) throws IOException {
String path = "C:\\Users\\Syf200208161018\\Desktop\\neww.txt";
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(path),"UTF-8");
outputStreamWriter.write("hello world !!! 你好世界");
outputStreamWriter.flush();
outputStreamWriter.close();
}
}