2026/2/12 6:48:53
网站建设
项目流程
怎样建立一个网站步骤,德州制作网站哪家最专业,成都设计师,成都的设计院有哪些在实际的文件处理场景中#xff0c;我们常常会遇到需要整理、排序文本内容的需求。本文将分享一个使用Java缓冲流对《出师表》乱序文章进行恢复的实战案例。需求分析现有一个《出师表》的文本文件#xff0c;但文章行序被打乱。每行开头有数字编号表示正确顺序#xff0c;我…在实际的文件处理场景中我们常常会遇到需要整理、排序文本内容的需求。本文将分享一个使用Java缓冲流对《出师表》乱序文章进行恢复的实战案例。需求分析现有一个《出师表》的文本文件但文章行序被打乱。每行开头有数字编号表示正确顺序我们需要读取源文件按行首编号排序将排序后的内容写入新文件代码实现import java.io.*; import java.util.*; public class RestoreArticleOrder { public static void main(String[] args) { // 1. 定义文件路径 String sourceFile chushibiao_original.txt; String targetFile chushibiao_restored.txt; try ( // 2. 创建缓冲字符输入流 BufferedReader br new BufferedReader(new FileReader(sourceFile)); // 5. 创建缓冲字符输出流 BufferedWriter bw new BufferedWriter(new FileWriter(targetFile)) ) { // 3. 创建List集合存储数据 ListString lines new ArrayList(); // 4. 循环读取数据 String line; while ((line br.readLine()) ! null) { lines.add(line); } // 5. 按行首编号排序 // 假设每行格式为1. 臣亮言... lines.sort(Comparator.comparingInt(s - { // 提取行首数字 String num s.split(\\.)[0]; return Integer.parseInt(num); })); // 6. 遍历集合并写入 for (String sortedLine : lines) { bw.write(sortedLine); bw.newLine(); // 换行 } System.out.println(文章顺序恢复完成); } catch (IOException e) { e.printStackTrace(); } } }Java IO流知识总结一、IO流分类体系1. 按流向分输入流读取数据InputStream/Reader输出流写入数据OutputStream/Writer2. 按数据类型分字节流处理所有类型文件InputStream→FileInputStreamOutputStream→FileOutputStream字符流专门处理文本文件Reader→FileReaderWriter→FileWriter3. 按功能分节点流直接操作数据源处理流包装流对节点流进行包装二、缓冲流的优势传统流的问题// 不使用缓冲流每次读取一个字符 FileReader fr new FileReader(file.txt); int ch; while ((ch fr.read()) ! -1) { // 频繁IO操作 // 处理字符 }缓冲流的优势// 使用缓冲流减少IO次数 BufferedReader br new BufferedReader(new FileReader(file.txt)); String line; while ((line br.readLine()) ! null) { // 一次读取一行 // 处理整行 }优点减少磁盘IO次数提高效率提供便捷方法如readLine()默认缓冲区大小8KB三、常用IO流组合方式场景推荐组合说明文本文件读取BufferedReader FileReader高效读取文本文本文件写入BufferedWriter FileWriter高效写入文本二进制文件读取BufferedInputStream FileInputStream读取图片、视频二进制文件写入BufferedOutputStream FileOutputStream写入二进制数据序列化对象ObjectInputStream/ObjectOutputStream对象序列化四、最佳实践与注意事项资源关闭// 使用try-with-resources确保资源关闭 try (BufferedReader br new BufferedReader(new FileReader(file.txt))) { // 操作 } catch (IOException e) { e.printStackTrace(); }异常处理try { // IO操作 } catch (FileNotFoundException e) { System.out.println(文件不存在); } catch (IOException e) { System.out.println(读写异常); }缓冲区刷新BufferedWriter bw ...; bw.write(内容); bw.flush(); // 手动刷新缓冲区 // 或 close()会自动flush编码问题// 指定编码读取 BufferedReader br new BufferedReader( new InputStreamReader( new FileInputStream(file.txt), UTF-8 ) );五、性能对比操作类型无缓冲流缓冲流提升效果读取1MB文本约200ms约50ms4倍写入1MB文本约150ms约40ms3.75倍六、适用场景总结缓冲流适用大文件读写文本文件处理需要逐行处理节点流适用小文件简单操作二进制数据处理需要精细控制读写结语通过《出师表》顺序恢复的案例我们实践了缓冲流的基本操作。Java IO流体系提供了丰富的选择掌握各种流的特点和适用场景能够帮助我们编写更高效、更健壮的文件处理程序。在实际开发中建议优先考虑缓冲流处理文本文件注意资源管理和异常处理确保程序的可靠性。关键词Java IO流、缓冲流、BufferedReader、BufferedWriter、文件处理、字符流、性能优化