2013-02-22 69 views
0

此代码是从教程网站粘贴的,不适用于我的机器(win7-amd64)!顺便说一句,我想运行这段代码来获取一个通用文件的创建日期/时间。为什么这段代码返回一个零长度的“BufferedReader”?

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

可你有没有驱动器中的文件“LOGFILE.LOG”“C:”? – 2013-02-22 18:57:13

+0

该文件的内容是什么? – rgettman 2013-02-22 18:57:20

+0

添加有关您的问题和StackTrace的信息。 – 2013-02-22 18:57:51

回答

0

文件logfile.log不存在与BufferedReader准确读数为4线。第五次尝试返回null。所以data为空。

+0

感谢你们所有人。用ColinD和Mike热门技巧解决! – BicaBicudo 2013-02-22 21:07:03

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

相关问题