2016-03-08 16 views
0

爲了保持簡短,我試圖創建一個方法,它接受輸入文件流名稱作爲參數,然後允許用戶寫入該文本,並且用一個while循環附加到它。這是我寫的:輸出到用戶決定的文本文件使用方法

public void insertRowsToFile(OutputStream output) throws IOException { 

    Scanner keyboard = new Scanner(System.in); 
    //here is my mistake that i dont know how to solve (outputstream, boolean is undefined) 
    PrintWriter out = new PrintWriter(
          new OutputStreamWriter(
           new FileOutputStream(output, true))); 
    boolean answer = true; 
    while (answer == true) { 
     System.out.println("Enter the row:"); 
     String entered = keyboard.nextLine(); 
     out.println(entered); 
     System.out.println("Would you like to write more? (yes to continue)"); 
     String answer2 = keyboard.next(); 
     if (!answer2.equals("yes")) 
      answer = false; 
     } 
    } 
} 

回答

1

output變量應該是File而不是OutputStream

記住,的FileOutputStream構造函數是合法的只以下的:

  • new FileOutputStream(File, boolean)
  • new FileOutputStream(String, boolean)

這是正確的方法聲明:

public void insertRowsToFile(File output) throws IOException { 
    ... 
} 

編輯,未經測試:或者更好的辦法是保持OutputStream作爲參數,但改變out變量的初始化:

public void insertRowsToFile(OutputStream output) throws IOException { 
    ... 
    PrintWriter out = new PrintWriter(new OutputStreamWriter(output)); 
    ... 
} 

編輯2:OutputStreamFile之間的差異類:

  • OutputStream:是一個抽象類,接受o輸出字節並將它們發送到某個接收器。
  • File:類是文件和目錄路徑名的抽象表示。

資料來源:TutorialsPoint.com

+0

權,我想編輯的一部分,但我不知道是否會工作,作爲一個需要使用真正的從我的理解追加。我被告知沒有使用true,在寫入內容之前,文件的內容將被刪除。然而,我確實喜歡你發佈的第一個解決方案,儘管它讓我自問另一個問題,OutputStream和File之間有什麼區別? –

相關問題