java - Bufferedwriter 没有将*所有内容*保存到文件中

标签 java java-io bufferedwriter

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

有人可以帮助我如何将 netDetails 保存到文件中而不只是显示 null 吗?

最佳答案

(已编辑。)

这就是 getNetDetails() 中的问题:

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

换句话说,该方法总是netDetails保留为空,除非出现异常。

如果getNetDetails()返回一个字符串而不是设置一个变量,那就更好了,并且假设它是为了返回文件的最后一行,它应该是这样的:

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

您还应该在finally block 中关闭InputStreamReader,并且几乎可以肯定不会吞掉异常。

关于java - Bufferedwriter 没有将*所有内容*保存到文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7417287/

相关文章:

java - MyBatis 没有找到适合 jdbc 的驱动 :sqlserver

java - 重置 JComboBox 的值

Java 程序无法在 linux 中挂载的系统上写入

java - 迭代 HashMap 然后将整数写入文件

java - 避免代码重复 Spring Boot Controller

java - Rxjava,使用.zip合并两个livedata对象

Java,读取txt文件最快的类

java - FileInputStream 找不到文件

java - Double BufferedWriter 或 BufferedReader 的优点

java - 在Java框架中,为什么接受字节数组的BufferedWriter类中没有.write重载?