欧拉恒等式 2018-12-01 12:30 采纳率: 0%
浏览 1619

Java中如何对文本文件进行指定行的覆盖的操作?

rt,我有一个文本文件,想把其中指定的行已经存在的内容替换或者覆盖为其他字符串。
即在这个文本文件中 有一行字符串txx,如何把这个txt字符串替换为另外一个字符串str,其他的内容变,

  try {
        File file = new File("D:\\JAVA\\PROJECT\\newstudent.txt");
        FileReader fileReader = new FileReader(file);  
         LineNumberReader reader = new LineNumberReader(fileReader);  
         int x=temp+3;   //第几行
         String txt= "";
         for(int i=0;i<=x;i++) {
             txt=reader.readLine();
         }
        // 建立一个file对象,参数就是你想访问文件的路径
         if(oldpara.equals("学号")) {
             String str=txt.replace(AddInfo.clonum[temp], newpara);
             JOptionPane.showMessageDialog(null , "学生信息修改成功","提示消息",JOptionPane.WARNING_MESSAGE);
             System.out.println(str);
             PrintWriter pw=new PrintWriter(file);
             pw.println(str);
             pw.close();

         }else if(oldpara.equals("姓名")) {
             String str=txt.replace(AddInfo.cloname[temp], newpara);
             JOptionPane.showMessageDialog(null , "学生信息修改成功","提示消息",JOptionPane.WARNING_MESSAGE);
             System.out.println(str);
             PrintWriter pw=new PrintWriter(file);
             pw.println(str);
             pw.close();
         }else if(oldpara.equals("班级")) {
             String str=txt.replace(AddInfo.clocla[temp], newpara);
             JOptionPane.showMessageDialog(null , "学生信息修改成功","提示消息",JOptionPane.WARNING_MESSAGE);
             System.out.println(str);
             PrintWriter pw=new PrintWriter(file);
             pw.println(str);
             pw.close();
         }else if(oldpara.equals("电话")) {
             String str=txt.replace(AddInfo.clotel[temp], newpara);
             JOptionPane.showMessageDialog(null , "学生信息修改成功","提示消息",JOptionPane.WARNING_MESSAGE);
             System.out.println(str);
             PrintWriter pw=new PrintWriter(file);
             pw.println(str);
             pw.close();
         }else {
             JOptionPane.showMessageDialog(null , "信息输入错误!请重新输入","提示消息",JOptionPane.WARNING_MESSAGE);
         }

  • 写回答

2条回答 默认 最新

  • 你知我知皆知 2024-08-07 09:04
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在Java中,你可以使用FileWriter来写入新的数据到文本文件。以下是一个简单的示例,展示了如何根据指定的行号将特定的文本替换为另一个字符串:

    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    
    public class Main {
        public static void main(String[] args) throws IOException {
            File file = new File("path/to/your/file.txt"); // 替换为你的文件路径
            FileWriter writer = new FileWriter(file, true); // 添加append模式
            String oldPara = "学号"; // 需要替换的字段
            String newPara = "新学号"; // 新的值
    
            try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
                int lineNum = Integer.parseInt(reader.readLine()); // 获取第一条记录的行号
                while (lineNum <= 5 && lineNum > 0) { // 只处理前五条记录
                    String line = reader.readLine(); // 读取当前行
                    if (oldPara.equals(line)) { // 如果匹配旧值
                        writer.write(newPara + "\n"); // 写入新值,并换行
                    } else {
                        writer.write(line + "\n"); // 否则保留原值并换行
                    }
                    lineNum--; // 下一行的行号减1
                }
            }
    
            writer.flush(); // 将缓冲区中的所有数据写入磁盘
            writer.close(); // 关闭文件流
        }
    }
    

    这段代码首先打开文件,然后获取第一行的行号。然后遍历剩余的行,如果遇到与老值相匹配的行,则将其替换为新值;否则,保持原始值。最后,关闭文件流。

    注意:这只是一个基本的示例,你可能需要根据实际需求进行调整。例如,如果你想要覆盖的是整个行而不是特定的字符,你可能需要使用replaceAll方法。此外,确保你的文件是正确的格式和大小,以便程序能够正确地执行操作。

    评论

报告相同问题?