簡體   English   中英

如何將某些內容打印到輸出文件?

[英]How do I print something to an output file?

具體地說,我已經設法創建(也許)一個程序,該程序讀取文件並在每個段落的開頭加一個縮進。 問題是,在我將字符計數器打印到輸出文件之前,現在我什么都沒有打印到輸出文件了。 但是,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);
}
}

每當您在外部修改已經在IDE *中打開的文件時,都會要求您重新加載該文件。 在Eclipse中,可以通過按F5按鈕來完成。 這將刷新所做的更改並顯示文件。

刷新文件后,您無需說明是否顯示正確的信息。 我認為您遇到的問題是您將控制台視圖中的文本的實時顯示與文件顯示視圖相混淆。

如果將輸出打印操作從System.out.println語句更改為outFile.println ,這意味着輸出將發送到指定的文件,而不是發送到控制台。 如果要驗證輸出是否確實在打印,可以在outFile.println(inputString)語句之前或之后包含System.out.println(inputString)

另外,正如mazaneicha所建議的那樣,在處理inFileoutFile inFileoutFileinFile執行close()方法。 即使Java垃圾回收會自動關閉這些連接,但還是要養成習慣。

*適用於Eclipse和Netbeans

您至少需要刷新編寫器,然后在末尾添加:

outFile.flush();

還記得完成后關閉流:

outFile.close();

這部分代碼將使inFile閱讀器一直讀取到文件末尾,而繞過if / else代碼塊。 我不認為您打算在while循環中僅包含這一行。

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

新行字符是“ \\ 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);
        }

    }   
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM