0

具体来说,我已经设法创建(也许)一个程序,该程序读取文件并在每个段落的开头放置一个缩进。问题是,在我将字符计数器打印到输出文件之前,现在我完全没有打印到输出文件。然而,Java 表示它是从外部来源修改的。我曾经能够在我的 JGrasp IDE 中查看文件更改。有什么明显的我忽略了吗?

这是代码......以防万一它是我的代码:

public class ReadFile
{
static Scanner inFile;
static PrintWriter outFile;

public static void main(String[] args) throws IOException
{
  String inputString;
  final String indent = "     ";
  inFile = new Scanner(new FileReader("History.d1"));
  outFile = new PrintWriter(new FileWriter("History.d2"));
  inputString = indent + inFile.nextLine();
  outFile.println(inputString);

  while (inFile.hasNextLine())
  {
    inputString = inFile.nextLine();
  }

  if (inputString.length() < 1) 
  {
    outFile.print("/n");
  }
  else if (inputString.length() > 0)
  {
    inputString = indent + inputString;
  }
  outFile.println(inputString);
}
}
4

4 回答 4

0

每当您从外部修改已在 IDE* 中打开的文件时,系统都会要求您重新加载该文件。在 Eclipse 中,这可以通过按 F5 按钮来完成。这将使用所做的更改刷新文件显示。

如果刷新文件后显示正确的信息,您没有在问题中说明。我认为您遇到的问题是您将控制台视图中文本的实时显示与文件显示视图混淆了。

如果您将输出打印操作从 System.out.printlnstatement 更改为outFile.println,这意味着输出将发送到指定的文件,而不是控制台。如果要验证输出是否确实正在打印,可以在语句System.out.println(inputString)之前或之后包含。outFile.println(inputString)

此外,正如 mazaneicha 建议的那样,最好在完成时执行该方法close()。尽管 Java 垃圾收集会自动关闭这些连接,但养成这个习惯仍然是一个好主意。 inFileoutFile

*适用于 Eclipse 和 Netbeans

于 2012-04-29T19:14:33.777 回答
0

您至少需要刷新编写器,在最后添加:

outFile.flush();

还记得在完成后关闭流:

outFile.close();
于 2012-04-29T19:15:16.350 回答
0

This segment of code will make the inFile reader read all the way to the end of the file, bypassing the if/else code block. I don't think you meant to have just this one line in the while loop.

 while (inFile.hasNextLine())
 {
     inputString = inFile.nextLine();
 }
于 2012-04-29T19:19:25.293 回答
0

换行符是“\n”,而不是“/n”。这里有一些代码可以做你想做的事:

try(BufferedReader inFile = new BufferedReader(new FileReader("History.d1")); BufferedWriter outFile = new BufferedWriter(new FileWriter("History.d2"))){   
    String inputString;
    final String indent = "     ";

    while ((inputString=inFile.readLine())!=null)
    {   

        if (inputString.length() < 1)   
        {
            outFile.write("\n");
        }
        else if (inputString.length() > 0)
        {
            inputString = indent + inputString;
            outFile.write(inputString);
        }

    }   
}
于 2012-04-29T19:46:35.273 回答