如果返回零,则Java从文件中删除字符串

时间:2014-11-03 20:00:42

标签: java string io

我有一个脚本,可以访问文本文件中的链接。我想删除返回值为null的字符串

Example:

 1. some link (returned value 'hi')
 2. some link (returned null value)     //DELETE STRING FROM FILE BECAUSE NULL VALUE RETURNED
 3. some link (returned value 'hello')

一些代码:

while ((input = in.readLine()) != null) {
                    System.out.println(input);

            if ((input = in.readLine())=="0"){

            System.out.println("1 String deleted from file because null value returned ");                  
    }

我知道我正在检查String" 0"而不是整数0,因为服务器将它存储为我想的字符串。

1 个答案:

答案 0 :(得分:1)

我认为,而不是试图删除到中间阅读的文件(我甚至不知道你是如何做到的,如果你能做到这一点,那就是一个可怕的想法)通过读取整个文件并将每个值存储在ArrayList<string>的索引中,您可以更轻松地完成此操作:

ArrayList<string> lines = new ArrayList<string>();
while ((input = in.readLine()) != null) {
    lines.add(input);
}

然后在您完成阅读后再次写入该文件,跳过lines等于"0"的任何索引:

for (String line : lines)
 {
     // skip "0"
     if (line.equals("0")) { 
         continue;
      }

      // write to file if not      
      writer.write(line);
      writer.newLine();
 } 

请注意==比较Java中的引用相等性,.equals比较值相等,因此几乎所有情况都要使用.equals

当然,如果您的评论如上所述,您还有另一个文件不断写入此文件,那么您最好不要寻找一个全新的想法。就此而言,如果您有一个脚本编写这些,为什么不更改脚本,以便它不会首先写入空值的行?除非你完全没有办法改变脚本,否则旋转另一个以不断重写其部分工作(在同一个不断访问的文件上!)将是一个。无效和b。非常有问题。