我创建了一个名为“Month.txt”的文本文件,其中包含以下字符串:“January February March”。 这是我下面的程序,它从文本文件中删除“二月”:

import java.io.*;
import java.util.*;

class Delete_element_from_txtfile
{
    public static void main()throws IOException
    {
        FileReader fr=new FileReader("Month.txt");
        BufferedReader br=new BufferedReader(fr);

        FileWriter fw=new FileWriter("Month.txt");
        BufferedWriter bw=new BufferedWriter(fw);
        PrintWriter pw=new PrintWriter(bw);

        String str;
        String newstr="";

        while((str=br.readLine())!=null)
        {
            StringTokenizer S=new StringTokenizer(str);
            while(S.hasMoreTokens()==true)
            {
                String month=S.nextToken();
                if(month.equals("February"))
                {
                    continue;
                }
                else
                    newstr=newstr+(month+" ");
            }
        }
        pw.print(newstr);

        pw.close();
        bw.close();
        fw.close();

        br.close();
        fr.close();
    }
}

但是在运行程序后,当我打开文件时,它全是空的。 我刚刚开始用 java 处理文件,所以我不知道发生了什么。 我想在这个问题上得到一些帮助。 谢谢!

#1楼 票数:0

您正在打开相同的文件进行读写是问题所在。 因为您在读取后立即打开文件进行写入,因此它会覆盖当前数据。

只需在文件阅读器关闭后移动写入代码即可。

这是更新的代码:

public static void main(String []ars)throws IOException
    {
        FileReader fr=new FileReader("Month.txt");
        BufferedReader br=new BufferedReader(fr);


        String str;
        String newstr="";

        while((str=br.readLine())!=null)
        {
            StringTokenizer S=new StringTokenizer(str);
            while(S.hasMoreTokens()==true)
            {
                String month=S.nextToken();
                if(month.equals("February"))
                {
                    continue;
                }
                else
                    newstr=newstr+(month+" ");
            }
        }


        br.close();
        fr.close();

        FileWriter fw=new FileWriter("Month.txt");
        BufferedWriter bw=new BufferedWriter(fw);
        PrintWriter pw=new PrintWriter(bw);
        pw.print(newstr);

        pw.close();
        bw.close();
        fw.close();

    }

#2楼 票数:0

这是一个更紧凑、更漂亮的解决方案:

List<String> lines = Files.readAllLines(Paths.get("Month.txt")); //read every line
//filer out lines that contain february
lines = lines.stream().filer(line -> !line.contains("February")).collect(Collectors.toList());
Files.write(Paths.get("Month.txt"), lines, Charset.defaultCharset()); //write it back

无需手动关闭文件读取流,无需使用 while 循环和StringTokenizer类的类!

  ask by translate from so

未解决问题?本站智能推荐:

1回复

从文本文件中删除具有特定元素的行

我正在尝试从文本文件中删除所有带有0.0行。 这是它的输出: 这是我想要的输出 码:
4回复

从文本文件中删除单词

我有一种方法可以从文本文件中以单词列表格式删除单词,但是它会不断删除文件中的所有数据,而不是特定单词
3回复

在java中删除文本文件

我有一种方法可以删除包含选定电话号码的文本文件中的一行。 下面是我的代码。 我的“phonebook.txt”文件如下 当我单击带有“selectedphone”为 0787465147 的“删除”按钮时,它将创建一个“tempphonebook.txt”文件,如下所示。 然后应该删除“
1回复

如何从文本文件中删除内容?

我想删除文本文件的内容,因为不需要其内容,但是我需要文本文件才能使代码正常工作。
2回复

如何从文本文件中删除逗号?

我已经走了这么远,但是缓冲区似乎不会占用数组,因为首先我是这样 现在我离开这里,因为它是阅读但不带逗号。 它看起来像什么 输入 产量
4回复

删除文本文件中的空格

我必须编写一个简单的代码来计算文本文件中的单词。 然后有人告诉我,它是不完整的,因为例如,当连续有两个或多个空格时,函数会将它们视为一个单词,并且结果将是不正确的。 因此,我尝试通过列出列表并删除其中的所有“”元素来修复它,但似乎不起作用。 您能否建议可以做什么? 这是现在的代码:
3回复

删除文本文件中的行

我尝试过使用此代码删除文本文件的某些行。 但是,当我删除旧文件并将其替换为新文件时。 该文件将不会被删除或重命名。 有人可以帮我吗? PS:我尝试了所有可以找到的方法,但无法使用,我的注册系统项目需要它。 提前致谢
1回复

从文本文件中删除多行

我正在尝试创建一种方法来从txt文件中删除某些文本。 我首先检查文件中是否存在字符串: 由于我要删除的字符串包含多行(字符串configurationString =“ This \\ nis a \\ n多行\\ n string”;),因此我首先创建一个新的字符串数组并将该字符串拆