为什么这段代码返回一个零长度的“BufferedReader”?
此代码是从教程网站粘贴的,不适用于我的机器(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);
我想运行这段代码来获取一个通用文件的创建日期/时间。
如果你可以使用Java 7,创建日期是通过Files.readAttributes
和BasicFileAttributes.creationTime
感谢你们所有人。用ColinD和Mike热门技巧解决! – BicaBicudo 2013-02-22 20:50:36
文件logfile.log
不存在与BufferedReader
准确读数为4线。第五次尝试返回null。所以data
为空。
感谢你们所有人。用ColinD和Mike热门技巧解决! – BicaBicudo 2013-02-22 21:07:03
的问题是,该命令:不仅仅是你想要的线条
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()方法和过滤器来使用包含文件名的行。
可你有没有驱动器中的文件“LOGFILE.LOG”“C:”? – 2013-02-22 18:57:13
该文件的内容是什么? – rgettman 2013-02-22 18:57:20
添加有关您的问题和StackTrace的信息。 – 2013-02-22 18:57:51