0

Linux マシンで実行されている Java アプリケーションに取り組んでいます。これは、ファイルのタイムスタンプを、エポックの形式で保存されている別の時間に変更する必要があります。タイムスタンプを変更する必要があるファイルは、ローカル ファイル システムに存在します。

例 - タイムスタンプが17 Jul 5 20:03を示す localFile.txt は、エポック「1341446400000」に変更する必要があります

私はこのようなコードを書いています -

private void modifyTime(final String localFile, final long originalEpoch) throws  IOException {
    String getDateFromEpoch = "date -d@" + String.valueOf(originalEpoch);
    //getDateFromEpoch is returned in form - "Thu Jul  5 20:03:32 UTC 2012"
    Process process = runCommand(getDateFromEpoch);
    InputStream iStream = process.getInputStream();
    BufferedReader bufReader = new BufferedReader(new InputStreamReader(iStream));
    String originalDate = bufReader.readLine();
    bufReader.close();

    String touch = "touch -c -d " + originalDate + " " + localFile;
    runCommand(touch);
}

private Process runCommand(final String cmd) throws IOException {
    Process p = Runtime.getRuntime().exec(cmd);
    try {
        p.waitFor();
    } catch (InterruptedException e) {
        // ignore this exception
    }
    return p;
}

RunningはThu Jul 5 20:03:32 UTC 2012"date -d@" + String.valueOf(originalEpoch);のようなものを返します。これをタッチコマンドで使用してもうまくいきません。

これを行う方法はありますか?

4

1 に答える 1

2

File.setLastModified が欲しいだけのように聞こえます

http://docs.oracle.com/javase/7/docs/api/java/io/File.html#setLastModified(long )

于 2012-07-05T21:21:29.423 に答える