BufferedReader字节缓冲输入流
BufferedReader字节缓冲输入流
继承父类的方法:
int read() 读取单个字符并返回
int read (char【】 huf)一次读取多个字符,将字符读入数组
void close 关闭该流并释放与之关联的所有资源
构造方法:
BufferedReader(Reader in)创建一个使用默认大小输入缓冲区的缓冲字符输入流
BufferedReader(Reader in int sz) 创建一个使用指定大小输入流缓冲区字符输入流
参数:
Reader in :字符输入流
我们可以传递FileReader,缓冲流会给FileReader增加了一个缓冲区,提高FileReader的读取效率
特有成员方法:
String ReadLine() 读取一个文行
使用步骤:
1,创建字符缓冲输入流对象,构造方法中传递字符输出流
2,调用字符缓冲流入中的方法read/readline,读取文本
3,释放资源:
案例:
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader("aa.txt"));
int len =0;
while ((len=reader.read())!=-1){
System.out.println((char) len);
}
reader.close();
}
}
对文本的内容排序
练习:
对文本内容进行排序
按照(123)排序
分析:
1,创建以恶搞HashMap集合对象,可以:存储每行文本的序号(1,2,3,4);value:存储每行的文本
2,创建字符缓冲输入流对象,构造方法中绑定字符输入流
3,创建字符缓冲流出流对象,构造方法中绑定字符输出流
4,使用字符缓冲出任流中的方法readline,逐行读取文本
5,对读取到文本进行切割,获取行中的序号和文本内容
6,把切割好的序号和文本的内存存储到HashMap集合中(Key序号有序的,会自动排序1,2,3...)
7,遍历HashMap集合,获取每个一个键值对
8,把每一个键值对,拼接为一个文本行
9,把拼接好的文本,使用字符缓冲流输出流中的方法writer写入文本中
案例:
public class Wenbenpaixu {
/**
* 1,创建以恶搞HashMap集合对象,可以:存储每行文本的序号(1,2,3,4);value:存储每行的文本
* 2,创建字符缓冲输入流对象,构造方法中绑定字符输入流
* 3,创建字符缓冲流出流对象,构造方法中绑定字符输出流
* 4,使用字符缓冲出任流中的方法readline,逐行读取文本
* 5,对读取到文本进行切割,获取行中的序号和文本内容
* 6,把切割好的序号和文本的内存存储到HashMap集合中(Key序号有序的,会自动排序1,2,3...)
* 7,遍历HashMap集合,获取每个一个键值对
*
* 8,把每一个键值对,拼接为一个文本行
* 9,把拼接好的文本,使用字符缓冲流输出流中的方法writer写入文本中
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) throws IOException {
HashMap<String, String> map = new HashMap<>();
BufferedReader reader = new BufferedReader(new FileReader("aa.txt"));
BufferedWriter writer = new BufferedWriter(new FileWriter("bb.txt"));
String len ="";
while ((len=reader.readLine())!=null){
String[] arr = len.split("\\.");
map.put(arr[0],arr[1]);
}
for (String s : map.keySet()) {
String value =map.get(s);
len=s+"."+value;
writer.write(len);
writer.newLine();
}
writer.close();
reader.close();
}
}