知识:
1.字符缓冲输出流和字符缓冲输入流: BufferedWriter,BufferedReader
2.BufferedWriter:void newLine()
3.BufferedReader:public String readLine()
一.字符缓冲流
1.字符缓冲输出流
BufferedWriter:将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入,
可以指定缓冲区大小,或者可以接受默认大小。默认值足够大,可用于大多数用途
BufferedWriter(Writer out)
入门代码实现:
public class CharStreamDemo10 {
public static void main(String[] args) throws IOException {
//字符缓冲输出流
BufferedWriter bw = new BufferedWriter(new FileWriter("charstream\\a.txt"));
//写出数据
//实际写出的是97对应的字符a
bw.write(97);
bw.write("\r\n");
//实际写出的是97 - 101 对应的字符 abcde
char [] chars = {97,98,99,100,101};
bw.write(chars);
bw.write("\r\n");
//实际写的是abc
bw.write(chars,0,3);
bw.write("\r\n");
//会把字符串的内容原样写出
bw.write("黑马程序员");
bw.write("\r\n");
//会把字符串的一部分写出 abcde
String line = "abcdefg";
bw.write(line,0,5);
bw.flush();
bw.close();
}
}
2.字符缓冲输入流
BufferedReader:从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取,
可以指定缓冲区大小,或者可以使用默认大小。 默认值足够大,可用于大多数用途
BufferedReader(Reader in)
入门代码实现:
public class CharStreamDemo9 {
public static void main(String[] args) throws IOException {
//字符缓冲输入流
BufferedReader br = new BufferedReader(new FileReader("charstream\\a.txt"));
//读取数据
char [] chars = new char[1024];
int len;
while((len = br.read(chars)) != -1){
System.out.println(new String(chars,0,len));
}
br.close();
}
}
3.newLine()和 readLine()
概述:
BufferedWriter:
void newLine():
写一行行分隔符,行分隔符字符串由系统属性定义
BufferedReader:
public String readLine() :
读一行文字。 结果包含行的内容的字符串,不包括任何行终止字符,如果流的结尾已经到达,则为null
代码案例实现:
public class CharStreamDemo11 {
public static void main(String[] args) throws IOException {
//1.字符缓冲流的特有功能,字符缓冲输出流BufferedWrite:newLine跨平台的换行符
//创建对象
BufferedWriter bw = new BufferedWriter(new FileWriter("charstream\\a.txt"));
//写出数据
bw.write("黑马程序员666");
//跨平台的回车换行
bw.newLine();
bw.write("abcdef");
//跨平台的回车换行
bw.newLine();
bw.write("-------------");
//刷新流
bw.flush();
//释放资源
bw.close();
//2.字符缓冲流的特有功能,字符缓冲输入流BufferedReader: readLine 读一整行
//创建对象
BufferedReader br = new BufferedReader(new FileReader("charstream\\a.txt"));
//使用循环来进行改进
String line;
//可以读取一整行数据。一直读,读到回车换行为止。
//但是他不会读取回车换行符。
while((line = br.readLine()) != null){
System.out.println(line);
}
//释放资源
br.close();
}
}
4.案例:读取文件中的数据排序后再次写到本地
需求:
读取文件中的数据,排序后再次写到本地文件 [sort文件内容: 7 3 2 1 4 5 8 6 9 10 ]
读取数据
将数据排序
写回本地
代码实现:
public class CharStreamDemo14 {
public static void main(String[] args) throws IOException {
//需求:读取文件中的数据,排序后再次写到本地文件
//分析:
//特别注意:输出流一定不能写在这里,因为会清空文件中的内容
//BufferedWriter bw = new BufferedWriter(new FileWriter("charstream\\sort.txt"));
//1.要把文件中的数据读取进来。
BufferedReader br = new BufferedReader(new FileReader("charstream\\sort.txt"));
String line = br.readLine();
System.out.println("读取到的数据为" + line);
br.close();
//2.按照空格进行切换
String[] split = line.split(" ");//9 1 2 5 3 10 4 6 7 8
//3.把字符串类型的数组变成int类型
int [] arr = new int[split.length];
//遍历split数组,可以进行类型转换。
for (int i = 0; i < split.length; i++) {
String smallStr = split[i];
//类型转换
int number = Integer.parseInt(smallStr);
//把转换后的结果存入到arr中
arr[i] = number;
}
//4.排序
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
//5.把排序之后结果写回到本地 1 2 3 4...
BufferedWriter bw = new BufferedWriter(new FileWriter("charstream\\sort.txt"));
//写出
for (int i = 0; i < arr.length; i++) {
bw.write(arr[i] + " ");
bw.flush();
}
//释放资源
bw.close();
}
}
二.IO流小结
IO流总结图
三.更多精彩内容
http://www.gxcode.top/code