所以我最近收到了一个我需要阅读的大文本文件,遗憾的是它的格式非常糟糕,因为到处都有下一行字符使得它非常难以阅读。所以我一直试图想办法对文件进行排序,并使用java程序删除每个nextLine
。
例如,如果我们有这个文字:
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写入单独的文本文件(如果不是)。但我不确定如何实现这一点。我不确定如何检查下一个字符是否是下一行。
任何帮助都会很棒。
答案 0 :(得分: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.
答案 1 :(得分: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
。
答案 2 :(得分:0)
我建议您使用BufferedReader,并使用readLine()
方法一次读取一行文件。
当您读取空行时,该方法将返回一个(非空)空字符串。
当您到达文件末尾时,该方法将返回null。
否则,该方法将返回行...并删除行终止符。 (因此,当您输出该行时,请不要忘记添加行终止符!)
这应该足以让您自己编写程序。 (这将是一件好事!)