我对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吗?
答案 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
,几乎可以肯定不吞下异常。