0

私はJavaに少し慣れていないので、誰かが私を助けてくれることを望んでいました. 私はいたるところを見てきましたが、解決策を見つけることができないようです。bufferedwriter を使用して、メソッドの結果をファイルに保存しようとしています。bufferedwriter 自体は、他の文字列を保存しているように機能しますが、この機能に関しては「null」と表示されるだけです。このメソッドの結果が複数の文字列を返すためですか? これを解決するにはどうすればよいですか? 私のコードは次のとおりです。

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 );
}

nullを表示するだけでnetDetailsをファイルに保存する方法を教えてください。

4

1 に答える 1

3

(編集済み)

これが問題ですgetNetDetails()

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

つまり、例外がない限り、メソッドは常にnullのままになります。netDetails

getNetDetails()変数を設定する代わりに文字列を返す方が良いでしょう。ファイルの最終行を返すことを意図していると仮定すると、次のようになります。

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

またInputStreamReader、finallyブロックで閉じる必要があり、ほとんどの場合、例外を飲み込まないでください。

于 2011-09-14T13:45:10.660 に答える