Установить дату создания файла из приглашения MATLAB - PullRequest
0 голосов
/ 25 сентября 2018

Цель состоит в том, чтобы установить дату создания файла из командной строки MATLAB с помощью минимального количества команд JAVA . Способность MATLAB обрабатывать команды JAVA NIO ограничена автоматическим боксом , необходимым для их прозрачной работы, поэтому необходимо вызывать форму массива их аргументов.

Начиная с Java 7 , можно использовать java.nio.file.Files.setAttribut и атрибут creationTime . Поскольку команды должны быть введены из приглашения MATLAB, существует ограничение JDK 1.7, налагаемое тестируемой системой.

ОБНОВЛЕНИЕ:

Я пытаюсь вычислить даты создания нового файла вMATLAB, как показано ниже, и стараться избегать использования FileTime.fromMillis(c.getTimeInMillis()) для установки даты создания файла (если это возможно).

ВОПРОС:

Есть ли альтернативный формат для установки даты / времени = 9/ 1/18 16:00?filedate было вычислено, но не может быть приведено к нужному времени файла.

enter image description here

КОМАНДЫ MATLAB:

p="C:DATA\testfile.txt"

filedate=1000*posixtime(datetime('2018-09-01 16:00','InputFormat','uuuu-MM-dd HH:mm','TimeZone','UTC'))

java.nio.file.Files.setAttribute(p, "creationTime", filedate, javaArray('java.nio.file.LinkOption', 0));

1 Ответ

0 голосов
/ 26 сентября 2018

MATLAB m-функция Протестировано с R2017A с JDK 1.7:

function SetCreateDate(STR_filename, posixdate)
% SetCreateDate(STR_filename, posixdate)
% STR_filename = 'C:\Data\my_testfile.dat'
% posixdate = posixtime(datetime('15-Sep-2018 16:00:01','InputFormat','dd-MMM-uuuu HH:mm:ss','TimeZone','America/New_York'))
filePath = strrep(STR_filename,'\','\\');
p = java.nio.file.Paths.get(filePath,javaArray('java.lang.String', 0));
filedate=posixdate*1000;    % filedate is in milli-seconds
java.nio.file.Files.setAttribute(p, "creationTime", java.nio.file.attribute.FileTime.fromMillis(filedate), javaArray('java.nio.file.LinkOption', 0));
%%%% Additional Filetime Attributes that can be set
%java.nio.file.Files.setAttribute(p, "lastAccessTime", java.nio.file.attribute.FileTime.fromMillis(filedate), javaArray('java.nio.file.LinkOption', 0));
%java.nio.file.Files.setAttribute(p, "lastModifiedTime", java.nio.file.attribute.FileTime.fromMillis(filedate), javaArray('java.nio.file.LinkOption', 0));

Другие атрибуты можно найти здесь :

Name                  Type
-------------------------------
"lastModifiedTime"    FileTime
"lastAccessTime"      FileTime
"creationTime"        FileTime
"size"                Long
"isRegularFile"       Boolean
"isDirectory"         Boolean
"isSymbolicLink"      Boolean
"isOther"             Boolean
"fileKey"             Object

Пожалуйста, подтвердите этот ответ, только если вы успешно используете функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...