java文件有点问题。可写
服务器:192.168.0.18/share是一个samba服务器,所有服务器都可以写入路径
Files.write(Paths.get(URI.create("file://192.168.0.18/share/aa/aaaa")), "asd34234asdasd".getBytes(), StandardOpenOption.CREATE,StandardOpenOption.APPEND);
System.out.println(Files.isWritable(Paths.get(URI.create("file://192.168.0.18/share/aa/aaaa"))));
我发现第一行确实创建了一个文件,并在其中添加了文本
但是第二行返回false
我不知道为什么
我尝试JDK7_u5&;u13
谢谢
# 1 楼答案
写入共享时,文件属性并不总是可用的,因此代码告诉您的是,它无法确定文件是否可读
在实际由不同操作系统托管的文件系统上执行文件操作时,大多数情况下都是这样——低级别的文件属性并不总是向客户端公开
如果您执行了
new File(<your file>).exists()
,它几乎肯定会返回true
,因此要确定您看到的原因是否确实与属性相关,您可以尝试以下两种方法之一:或
并询问结果,看看是否返回了有意义的/预期的属性
# 2 楼答案
如果检查时
"file://192.168.0.18/share/aa/aaaa"
不存在,则应测试(现有)目录"file://192.168.0.18/share/aa/"
上的可写标志,如下所示: