我正在开发一个在 linux 机器上运行的 java 应用程序,它应该将文件的时间戳更改为以纪元形式存储的另一个时间。需要更改时间戳的文件存在于本地文件系统中。
Ex - 时间戳显示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"date -d@" + String.valueOf(originalEpoch);
正在返回Thu Jul 5 20:03:32 UTC 2012 之类的东西。在触摸命令中使用此命令对我不起作用。
有没有办法做到这一点?