如何在MatLab中使用Java nio的Files.Move

vu8f3i0k  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(158)

我想在MatLab中使用java.nio.file.Files.move()方法。
虽然我只需要缺省行为,但MatLab需要所有3个输入,否则会抛出No method ... with matching signature found.错误。传递[](我认为它会转换为null,但不是documented)会得到java.lang.NullPointerException错误。
如何在MatLab中创建CopyOption对象?
示例:

>> version -java
ans =
    'Java 1.8.0_202-b08 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode

zipFilePath=java.nio.file.Paths.get('test.zip',javaArray('java.lang.String', 0));
zipFileSystem=java.nio.file.FileSystems.newFileSystem(zipFilePath,[]);

path1=zipFileSystem.getPath('/test.txt',javaArray('java.lang.String', 0));
path2=zipFileSystem.getPath('/test_changed.txt',javaArray('java.lang.String', 0));

% java.nio.file.Files.move(path1,path2,???); % what should ??? be..

java.nio.file.Files.move(path1,path2,java.nio.file.StandardCopyOption.COPY_ATTRIBUTES)
No method 'java.nio.file.Files.move' with matching signature found. 

zipFileSystem.close();

(我还附上了我对.move()的特殊用法,以防有其他重要的事情,但我不知道。)

umuewwlo

umuewwlo1#

Files.move的第三个参数是一个java.nio.file.CopyOption数组,因此您需要设置一个CopyOption数组,该数组使用一个条目表示实现类java.nio.file.StandardCopyOption.COPY_ATTRIBUTES的值:

optArr = javaArray('java.nio.file.CopyOption',1);
optArr(1) = java.nio.file.StandardCopyOption.COPY_ATTRIBUTES;
java.nio.file.Files.move(path1, path2, optArr);

相关问题