【发布时间】:2017-06-27 14:34:15
【问题描述】:
我正在使用以下代码创建一个目录(“FileAdmin”):
public class FileAdmin {
private File dir;
public FileAdmin() throws IOException{
this.dir = new File("FileAdmin");
if(!dir.exists() & !dir.mkdir()) throw new IOException();
}
Main 执行以下操作:
public static void main(String[] args) {
try{
FileAdmin fa = new FileAdmin();
} catch (Exception e){
e.printStackTrace();
}
}
这不是问题;当我在目录中创建一个文件(成功)并尝试删除它时,我不能。问题是 mkdir() 会创建一个只读目录,无论我做什么:
Solo lectura -> 只读
我已经尝试过dir.setWritable(true);,但它总是返回false。这是为什么呢?
编辑1:如果我创建目录,取消选中文件夹属性中的read-only 选项,一旦我运行代码文件就会被删除
编辑 2:我使用的是 Windows 10
【问题讨论】:
-
你为什么使用按位或这里
!dir.exists() & !dir.mkdir()?这将始终尝试创建目录,即使它已经存在。使用逻辑或&&,如果前半部分已经为真,这将缩短表达式的后半部分并且不计算表达式的后半部分。 -
旁白:不要在构造函数中做那样的工作。构造函数应该只初始化对象;添加一个单独的方法来创建目录。
-
在同一位置手动创建文件夹,并检查其属性。我想它会是一样的。
-
@AndyTurner 我这样做是因为该对象是一个目录,适用于特定项目。它的目的是关于我没有展示的方法,因为它们与问题无关
-
顺便说一句,只读中的黑色方块并不意味着它是只读的,它处于未知状态。您可以单击该框并将其更改为勾选或未勾选状态。