0

此代码是从教程网站粘贴的,在我的机器(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);
4

3 回答 3

0

问题是命令:

dir c:\\logfile.log /tc

返回比您想要的行更多的行!尝试自己打开一个 CMD 并执行该命令。你会看到类似的东西:

 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() 方法和过滤器,只使用包含文件名的行。

于 2013-02-22T19:12:44.973 回答
0

该文件logfile.log不存在,并且BufferedReader恰好读取了 4 行。第 5 次尝试它返回 null。data空也是如此。

于 2013-02-22T19:09:07.823 回答
0

我想运行此代码来获取公共文件的创建日期/时间。

如果您可以使用 Java 7,则创建日期可通过Files.readAttributesBasicFileAttributes.creationTime

于 2013-02-22T19:13:19.547 回答