缓冲区不保存*所有*文件

时间:2011-09-14 13:41:20

标签: java java-io bufferedwriter

我对java有些新意,并希望有人可以帮助我。我到处寻找,但似乎无法找到解决方案。 我正在尝试使用bufferedwriter将方法的结果保存到文件中。缓冲区本身可以正常工作,因为它保存了一些其他字符串,但是当涉及到这个函数时,它只显示'null'。是因为这个方法的结果返回多个字符串?我该如何解决这个问题? 我的代码如下:

缓冲区代码:

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保存到文件中而不显示null吗?

1 个答案:

答案 0 :(得分: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,几乎可以肯定吞下异常。