我正在尝试将UserDefinedFileAttribute
写入文件。
UserDefinedFileAttributeView view = Files.getFileAttributeView(myFile,UserDefinedFileAttributeView.class);
view.write("myattibute",Charset.defaultCharset().encode("1234");
我确保文件权限看起来是正确的。但是当这段代码在UNIX上运行时,我得到了错误
编写扩展属性时出错:操作不支持
但是,如果我更新/ tmp目录中的文件,它可以工作吗?
答案 0 :(得分:0)
我不太确定你在寻找什么但是在Windows中这对我有用,也许对你来说也是如此:
public static boolean writeCustomMETAfile(String filepath,String name, String value) {
boolean succes = false;
try {
Path file = Paths.get(filepath);
UserDefinedFileAttributeView userView = Files.getFileAttributeView(file, UserDefinedFileAttributeView.class);
//userView.write(name, Charset.defaultCharset().encode(value));
final byte[] bytes = value.getBytes("UTF-8");
final ByteBuffer writeBuffer = ByteBuffer.allocate(bytes.length);
writeBuffer.put(bytes);
writeBuffer.flip();
userView.write(name, writeBuffer);
succes = true;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return succes;
}
使用JUnit测试:
@Test
public void B_getFileInfo(){
String filepath = "....your.File";
METAdao.writeCustomMETAfile(filepath,"test","true");
String[] attribList = METAdao.readCustomMETAfile(filepath);
String[] expected1 = {"test"};
assertArrayEquals(expected1, attribList);
String test = METAdao.readCustomMETAfile(filepath,"test");
assertEquals("true", test);
METAdao.deleteCustomMETAfile(filepath,"test");
String[] recheck = METAdao.readCustomMETAfile(filepath);
String[] expected2 = {};
assertArrayEquals(expected2, recheck);
}
答案 1 :(得分:0)
您可能正在尝试将扩展属性写入不支持扩展属性的文件系统。在这种情况下,即使Java会错误地为null
返回非UserDefinedFileAttributeView
,导致客户端代码认为它可以正常工作。