繁体   English   中英

如果全为null,则从txt中删除一行

[英]Remove a line from txt if all null

因此,我有一个包含行数组的文本文件。 其中一些都是空条目。 意味着某些行可能为null; null; null; null; null; null; 一些为null; null; Apple; Orange; null; 每行的长度是不同的。

如何从该txt文件中删除仅包含所有空条目的行?\\

这是我的代码

BufferedReader tncReader = new BufferedReader(new FileReader("something.txt"));
BufferedWriter tncWriter = new BufferedWriter(new FileWriter("something_cleaned.txt"));
boolean allNull = true;

while(tncReader.readLine() != null ){
    String s = tncReader.readLine();
    String[] currentLine = s.split(";");
    System.out.println(currentLine[0]);

    for(String ss:currentLine){
        if(ss!=null){
            allNull = false;
            tncWriter.write(s + System.getProperty("line.separator"));
            break;
        }
    }
}

如果我正确理解了您的问题,则必须按照以下说明进行修改

BufferedReader tncReader = new BufferedReader(new FileReader("something.txt"));
BufferedWriter tncWriter = new BufferedWriter(new FileWriter("something_cleaned.txt"));
boolean allNull = true;

while(tncReader.readLine() != null ){
    String s = tncReader.readLine();
    String[] currentLine = s.split(";");
    System.out.println(currentLine[0]);

    for(String ss:currentLine){
        if(!"null".equalIgnoreCase(ss)){  //this line modified
            allNull = false;
            tncWriter.write(s + System.getProperty("line.separator"));
            break;
        }
    }            
}

经过一段时间的哈哈,我终于明白了。 抱歉,我也不清楚。 null实际上也是一个String对象。 是的,我想删除包含单词“ null”的行。 我也找到了一种删除该文件中的行的方法(欺骗性地)。

代码是这样的:

File input = new File("something.txt");
File output = new File("temp.text");
BufferedReader reader = new BufferedReader(new FileReader(input));
BufferedWriter writer = new BufferedWriter(new FileWriter(output));

String current;

while((current = reader.readLine())!=null){
    String[] data = current.split(";"); //puts whole line into an array

    boolean allNull = true;
    //check if entire array is all null
    for(String s:data){
        if(!s.equals("null")){
            allNull = false; //any traces of some other word besides null would render the boolean untrue
        }
    }
    if(allNull==false){
        writer.write(current + System.getProperty("line.separator"));
    }   
}
reader.close();
writer.close();

//Delete original file
if(!input.delete()){
   System.out.println("Could not delete file"); //error handling
}
//Rename file to original
if(!output.renameTo(input)){
   System.out.println("Could not rename file"); //error handling
}

随着作弊的进行,在我将临时文件写入“ temp.txt”之后,我继续删除原始文件,然后将其重命名。 因此,似乎我已经进入并删除了行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM