我有一个脚本,可以访问文本文件中的链接。我想删除返回值为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,因为服务器将它存储为我想的字符串。
答案 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。非常有问题。