【发布时间】:2013-03-10 10:43:06
【问题描述】:
我有这段代码
package Classes;
import java.io.*;
public class IpAdministrator {
public Boolean isActive(String ipAddress) {
boolean isActive = false;
String cmd;
String OS = System.getProperty("os.name");
System.out.println(OS);
String tmpfolder = System.getProperty("java.io.tmpdir");
System.out.println(tmpfolder);
//iptmp.deleteOnExit();
if (OS.equals("Linux")) {
cmd = "ping " + ipAddress + " -c 1";
} else {
cmd = "cmd /c ping " + ipAddress + " -n 1";
}
try {
String s = null;
Process p = Runtime.getRuntime().exec(cmd);
File iptmp = File.createTempFile("ipresult", ".txt", new File(tmpfolder));
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
s = s.toString();
BufferedWriter writer = new BufferedWriter(new FileWriter(iptmp));
writer.write(s);
}
} catch (Exception ex) {
System.out.println(ex.getMessage().toString());
}
return isActive;
}
}
我想在临时文件中写入命令的结果,我在这个站点的其他问题中发现了一些相关的东西,它似乎工作正常,但是当我运行它时,文件是用一些随机数字创建的(即:ipresult540677216848957037.txt)它是空的,我不知道为什么,我还读到它与java 1.7有关,所以这意味着我无法用信息填充文件,我缺少一些东西?
【问题讨论】:
-
我认为是因为您没有调用 writer.flush() 或关闭 writer,所以内容仍在缓冲区中。
-
s = s.toString()什么也没做。