仅打印文本文件的最后一行,而不是java中的其余行
我正在尝试将文件打印到文本文件。虽然我已经设法使它工作,但它只打印出控制台上打印的最后一行。例如,我的控制台大约有8000行,但它只打印文本文件中的最后一行,我想将所有行打印到文本文件中。 代码如下:仅打印文本文件的最后一行,而不是java中的其余行,java,text-files,Java,Text Files,我正在尝试将文件打印到文本文件。虽然我已经设法使它工作,但它只打印出控制台上打印的最后一行。例如,我的控制台大约有8000行,但它只打印文本文件中的最后一行,我想将所有行打印到文本文件中。 代码如下: try { BufferedReader reader = new BufferedReader(new FileReader("JDT.txt")); Writer output = null; File file = new Fil
try {
BufferedReader reader = new BufferedReader(new FileReader("JDT.txt"));
Writer output = null;
File file = new File("output.txt");
output = new BufferedWriter(new FileWriter(file));
String line = reader.readLine();
int count=0;
while(line !=null)
{
for(int i = 0 ; i<faults.length;i++){
if(line.contains(faults[i]))
System.out.println(line);
count++;
output.write(line +"Total: "+count);
//System.out.println("File Written");
}
line=reader.readLine();
}
System.out.println("Printed Lines =" +count);
output.close();
}
catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
}
提前谢谢你 您正在每个循环中重新创建和覆盖文件。在循环之前创建文件和BufferedWriter,并在循环完成后将其关闭。您正在每个循环中重新创建和覆盖文件。在循环之前创建文件和BufferedWriter,并在循环完成后将其关闭。应将这些行放在while循环开始之前 并在循环退出后关闭写入程序
output.close();
还有语句output.writeline+Total:+count;正在尝试将每一行写入另一行的末尾,从而产生一个大的输出行。替换为:
output.write(line + "Total: " + count + "\n");
这将导致每一行都打印在新的一行上
不确定这是否是预期的,但在代码输出中。write可能会对同一行执行多次,具体取决于faults变量的长度。这将导致同一行被多次打印
如果故障长度为n,则同一行的写操作将被调用n次
我想你需要这个:
while (line != null) {
for (int i = 0; i < faults.length; i++) {
if (line.contains(faults[i])) {
count++;
output.write(line + "Total: " + count + "\n");
System.out.println(line);
break;
}
}
// System.out.println("File Written");
line = reader.readLine();
}
您应该将这些行放在while循环的开始之前 并在循环退出后关闭写入程序
output.close();
还有语句output.writeline+Total:+count;正在尝试将每一行写入另一行的末尾,从而产生一个大的输出行。替换为:
output.write(line + "Total: " + count + "\n");
这将导致每一行都打印在新的一行上
不确定这是否是预期的,但在代码输出中。write可能会对同一行执行多次,具体取决于faults变量的长度。这将导致同一行被多次打印
如果故障长度为n,则同一行的写操作将被调用n次
我想你需要这个:
while (line != null) {
for (int i = 0; i < faults.length; i++) {
if (line.contains(faults[i])) {
count++;
output.write(line + "Total: " + count + "\n");
System.out.println(line);
break;
}
}
// System.out.println("File Written");
line = reader.readLine();
}
我想我应该把这个放在这里作为参考。这只是将行从输入文件复制到输出文件的一般方法
final class Sample
{
private static final String inputFile = "input_file.txt";
private static final String outputFile = "output_file.txt";
public void start()
{
BufferedReader bufferedReader;
BufferedWriter bufferedWriter;
try
{
bufferedReader = new BufferedReader(new FileReader(inputFile));
bufferedWriter = new BufferedWriter(new FileWriter(outputFile));
copyContents(bufferedReader, bufferedWriter);
bufferedReader.close();
bufferedWriter.close();
}
catch (final IOException e)
{
e.printStackTrace();
}
}
private void copyContents(final BufferedReader bufferedReader, final BufferedWriter bufferedWriter)
{
try
{
String line = bufferedReader.readLine();
while (null != line)
{
bufferedWriter.write(line + '\n');
line = bufferedReader.readLine();
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
我想我应该把这个放在这里作为参考。这只是将行从输入文件复制到输出文件的一般方法
final class Sample
{
private static final String inputFile = "input_file.txt";
private static final String outputFile = "output_file.txt";
public void start()
{
BufferedReader bufferedReader;
BufferedWriter bufferedWriter;
try
{
bufferedReader = new BufferedReader(new FileReader(inputFile));
bufferedWriter = new BufferedWriter(new FileWriter(outputFile));
copyContents(bufferedReader, bufferedWriter);
bufferedReader.close();
bufferedWriter.close();
}
catch (final IOException e)
{
e.printStackTrace();
}
}
private void copyContents(final BufferedReader bufferedReader, final BufferedWriter bufferedWriter)
{
try
{
String line = bufferedReader.readLine();
while (null != line)
{
bufferedWriter.write(line + '\n');
line = bufferedReader.readLine();
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
请格式化你的代码。为什么你要在每一行之后重新打开文件?长答案很短-你正在阅读的每一行上创建一个新的文件output.txt。我将Writer output=null;File File=new Fileoutput.txt;输出=新的BufferedWriterNewFileWriterFile;在缓冲读取器之后。我仍然有同样的问题。发布新编辑的代码请格式化您的代码。为什么在每行之后重新打开该文件?长答案非常短-您正在读取的每一行上创建一个新文件output.txt。我将Writer output=null;File File=new Fileoutput.txt;输出=新的BufferedWriterNewFileWriterFile;在缓冲读取器之后。我仍然有同样的问题。发布新编辑的代码是的,我更改了它。我仍然有相同的结果。在循环完成后调用close。它可以工作,但所有句子都在一行中,是否有任何方法可以将句子打印成新行?在BufferedWriter上调用newLine以在需要时开始新行。是的,我更改了它。我仍然有相同的结果。在循环完成后调用close。它可以工作,但所有句子都在一行中,是否有任何方法可以将句子打印成新行?在BufferedWriter上调用newLine以在需要时开始新行。我这样做了,它仍然只在文本文件中打印一行。output.close;仍然在循环中。它可以工作,但是所有的句子都在一行中,有什么方法可以将句子打印成新的行吗?它现在打印成新的行,但是它将同一个句子打印了20次。错误是一个数组,它从文本文件中查找关键字,然后打印出文本文件。有什么方法可以改变这个吗?我有,它仍然只在文本文件中打印一行。output.close;仍然在循环中。它可以工作,但是所有的句子都在一行中,有什么方法可以将句子打印成新的行吗?它现在打印成新的行,但是它将同一个句子打印了20次。错误是一个数组,它从文本文件中查找关键字,然后打印出文本文件。我有办法改变这个吗?