0

所以我最近收到了一个我需要阅读的大文本文件,不幸的是,它的格式非常糟糕,因为到处都有下一行字符,因此很难阅读。所以我一直在想一种方法来对文件进行排序并nextLine使用java程序删除每个文件。

例如,如果我们有这个文本:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse rhoncus interdum      condimentum. Proin viverra   
justo vel imperdiet sagittis, purus sapien sagittis mi, et blandit purus ante non libero. Nulla ac   
augue ut odio eleifend interdum  
 ac id justo. Quisque rutrum euismod sem, vel euismod nunc convallis eu. Praesent odio velit,
 condimentum id scelerisque  
 iaculis, vulputate vitae lacus. Fusce adipiscing blandit libero eu venenatis.
 Vestibulum nec urna   
pulvinar arcu pretium   
pretium. Duis vitae augue dolor. Etiam consectetur feugiat
 diam sit amet gravida. 

我们希望它变成这样:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse rhoncus interdum
condimentum. Proin viverra, justo vel imperdiet sagittis, purus sapien sagittis mi,       
blandit purus ante non libero. Nulla ac augue ut odio eleifend interdum ac id justo.
Quisque rutrum euismod sem, vel euismod nunc convallis eu. Praesent odio velit,
condimentum id scelerisque iaculis, vulputate vitae lacus. Fusce adipiscing blandit
libero eu venenatis. Vestibulum nec urna pulvinar arcu pretium pretium. Duis vitae
augue dolor 

我对使用 Java 读取/写入文本文件不是很有经验。我目前的想法是读取每个 char 值,检查它是否等于下一行的值,如果不是,则继续将该 char 写入单独的文本文件。但我不太确定如何实现这一点。我不确定如何检查下一个字符是否是下一行。

任何帮助都会很棒。

4

3 回答 3

1

您可以使用扫描仪来执行此操作。

Scanner in = new Scanner(new File(filename));
String new_file_string = "";
while (in.hasNextLine())
    new_file_string += in.nextLine();
// write new_file_string to file.
于 2013-11-10T01:51:25.237 回答
1
File file = new File("yourFilePath.txt");  // create File object to read from
Scanner scanner = new Scanner(file);       // create scanner to read
Printwriter writer = new PrintWriter("someOutputFile.txt"); // create file to write to

while(scanner.hasNextLine()){  // while there is a next line
    String line = scanner.nextLine();  // line = that next line

    // do something with that line
    String newLine = "";

    // replace a character
    for (int i = 0; i < line.length(); i++){
        if (line.charAt(i) != '*') {  // or anything other character you chose
            newLine += line.charAt(i);
        }
    }

    // print to another file.
    writer.println(newLine);
}

您也可以只写回同一个文件,但这需要使用StringBuilder.

于 2013-11-10T01:57:21.403 回答
0

我建议您使用 BufferedReader,并使用该readLine()方法一次读取文件一行。

  • 当您读取空行时,该方法将返回一个(非空)空字符串。

  • 当您到达文件末尾时,该方法将返回 null。

  • 否则,该方法将返回行 ... 并删除行终止符。(所以在输出行的时候,别忘了加行终止符!)

这应该足以让您自己编写程序。(那将是一件好事!)

于 2013-11-10T01:52:16.393 回答