此代码是从教程网站粘贴的,并不适用于我的机器(win7-amd64)!顺便说一句,我想运行此代码以获取公共文件的创建日期/时间。
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("cmd /c dir c:\\logfile.log /tc");
BufferedReader br =
new BufferedReader(new InputStreamReader(proc.getInputStream()));
String data = "";
for (int i = 0; i < 6; i++) {
data = br.readLine();
}
System.out.println("Extracted value : " + data);
//split by space
StringTokenizer st = new StringTokenizer(data);
String date = st.nextToken();//Get date
String time = st.nextToken();//Get time
System.out.println("Creation Date : " + date);
System.out.println("Creation Time : " + time);
答案 0 :(得分:0)
文件logfile.log
不存在,BufferedReader
正好读取4行。第五次尝试它返回null。所以data
为空。
答案 1 :(得分:0)
问题是命令:
dir c:\\logfile.log /tc
返回的行数多于您想要的行数! 尝试打开一个CMD和一个你自己命令的exec。你会看到类似的东西:
Volume in drive C has no label.
Volume Serial Number is XXXX-XXXX
Directory of C:\
22/02/2013 12:00 XXXX logfile.log
1 File(s) XXXX bytes
0 Dir(s) XXX.XXX.XXX.XXX bytes free
所以你需要忽略第一条线。 我建议你做的是使用一个能够使用readLine()方法和过滤器的阅读器,只使用包含文件名的行。
答案 2 :(得分:0)
我想运行此代码以获取公共文件的创建日期/时间。
如果您可以使用Java 7,则可以通过Files.readAttributes
和BasicFileAttributes.creationTime