0

このコードはチュートリアルWebサイトから貼り付けられたものであり、私のマシン(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

ファイルlogfile.logが存在せず、BufferedReader正確に4行を読み取りました。5回目の試行でnullが返されます。だからdatanullです。

于 2013-02-22T19:09:07.823 に答える
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

このコードを実行して、共通ファイルの作成日時を取得したいと思います。

Java 7を使用できる場合、作成日はおよびを介して入手できますFiles.readAttributesBasicFileAttributes.creationTime

于 2013-02-22T19:13:19.547 に答える