2011-09-14 48 views
0

我對Java有點新,並希望有人能幫助我。我到處尋找,但似乎無法找到解決方案。 我試圖使用bufferedwriter將方法的結果保存到文件中。緩衝寫入器本身的工作原理是保存一些其他的字符串,但是當涉及到這個函數時只顯示'null'。是因爲此方法的結果返回多個字符串?我該如何解決這個問題? 我的代碼如下:Bufferedwriter不保存*一切*文件

的BufferedWriter代碼:

public static boolean saveStringToFile (String fileName, String saveString) 
{ 
    boolean saved = false; 
    BufferedWriter bw = null; 
    try 
    { 
    bw = new BufferedWriter(new FileWriter(fileName)); 
    try 
    { 
      bw.write(saveString); 
      saved = true; 
    } 
    finally 
    { 
      bw.close(); 
    } 

    } 
    catch (IOException ex) 
    { 
     ex.printStackTrace(); 
    } 
    return saved; 
} 

函數本身:

public static void getNetDetails() 
{ 
    try { 
     Process net = Runtime.getRuntime().exec("lsof -i -n -P"); 
     BufferedReader netInput = new BufferedReader(
       new InputStreamReader(net.getInputStream())); 
    while ((netDetails = netInput.readLine()) !=null) 
    { 
     System.out.println(netDetails); 
     System.out.println("\n"); 
    } 

     } 
     catch(IOException e) { 
       System.out.println("exception happened - here are the details: "); 
       e.printStackTrace(); 

      } 
} 

保存功能,文件中使用的BufferedWriter

public static void generateNetReport() 
{ 
    saveStringToFile("Net.txt","here is the thing.." + "\n" + netDetails); 
} 

有人可以請幫助我如何可以將netDetails保存到文件中而不顯示空嗎? (編者)

+0

您似乎缺少代碼。你在哪裏調用'generateNetReport'和'saveStringToFile'? – cdeszaq

+0

saveStringToFile是緩衝寫入器代碼的名稱,generateNetReport是在主函數中創建的。上面提供的代碼只是我的原始類的片段。 – Sham

回答

3

這就是問題所在,在getNetDetails()

while ((netDetails = netInput.readLine()) !=null) 

換句話說,該方法將總是離開netDetails空,除非有異常。

這將是更好,如果getNetDetails()返回一個字符串,而不是設置變量,並假設它的意思返回該文件的最後一行,就應該是這樣的:

String line = null; 
String nextLine; 
while ((nextLine = netInput.readLine()) != null) { 
    line = nextLine; 
} 
return line; 

你應該在一個finally塊中關閉InputStreamReader,並且幾乎可以肯定不是吞下該異常。

+0

,但'getNetDetails()'被定義爲void ...是不是編譯錯誤? – amit

+0

@amit - 然後讓'getNDetDetails()'返回值,而不是將其轉儲到全局變量中。 – cdeszaq

+0

對不起,我的意思是netDetails,它是一個靜態字符串。我有其他的靜態字符串保存到文件,但不netDetails,我不明白爲什麼。 – Sham