我对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/