ZZZ_zzz555 2023-06-15 20:42 采纳率: 100%
浏览 29
已结题

用IO流删除文件中指定行数的内容

怎么用IO流删除指定行数的内容啊,真的很着急,麻烦彭于晏,吴彦祖回答一下

  • 写回答

3条回答 默认 最新

  • 冰点. 全栈领域优质创作者 2023-06-17 20:04
    关注
    
    
    import java.io.*;
    
    public class DeleteLineDemo {
        public static void deleteLines(String filePath, int[] lineNumbers) throws IOException {
            File oldFile = new File(filePath);
            File newFile = new File(filePath + ".tmp"); // 新建临时文件
            BufferedReader reader = new BufferedReader(new FileReader(oldFile));
            BufferedWriter writer = new BufferedWriter(new FileWriter(newFile));
            String line;
            int lineNumber = 0;
            while ((line = reader.readLine()) != null) {
                lineNumber++;
                if (!contains(lineNumbers, lineNumber)) { // 判断当前行是否需要保留
                    writer.write(line);
                    writer.newLine();
                }
            }
            reader.close();
            writer.close();
            oldFile.delete(); // 删除旧文件
            newFile.renameTo(oldFile); // 重命名临时文件为原文件名
        }
    
        private static boolean contains(int[] arr, int target) {
            for (int num : arr) {
                if (num == target) {
                    return true;
                }
            }
            return false;
        }
    
        public static void main(String[] args) throws IOException {
            String filePath = "test.txt";
            int[] lineNumbers = {2, 4}; // 需要删除的行号
            deleteLines(filePath, lineNumbers);
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月26日
  • 已采纳回答 6月18日
  • 创建了问题 6月15日

悬赏问题

  • ¥15 语料库之间数据差异性分析
  • ¥20 如何制作支付宝扫码跳转到发红包
  • ¥15 STM32F103C8T6使用标准库stm32f10x.h驱动ws2812
  • ¥20 我是数控机床电气工程师,主要是做840DSL与one,请问如何自学
  • ¥20 显示器休眠后重新唤醒出现蓝屏,蓝屏代码为DRIVER-POWER.STATE-FAILURE
  • ¥20 alt+tab怎么恢复到以前的模式
  • ¥15 来一个会抓包app支付链接的
  • ¥15 MMdetection安装
  • ¥15 STM32U535系列stop3模式进入和RTC唤醒
  • ¥15 如何提取全民K歌没下载过但播放过很多次的音频?