所以我正在开发一个简单的Windows资源管理器替代品。我想添加创建文件夹和文件的功能。出于某种原因,它只适用于我的root或c:/文件夹,但只要它在其他地方(例如C:\ Program Files(x86))它就不会出现这种情况。工作。我要么得到一个java.io.IOException:当我创建一个文件时拒绝访问,当我尝试创建一个文件夹时,没有出现异常,但没有创建文件夹。
这是我的新文件代码:
String location = getPath();
String name = JOptionPane.showInputDialog("Fill in the name of the new file. \nDon't forget to add file type (.txt, .pdf).", null);
if(name == null){
}
else {
File newFile = new File(location + "\\" + name);
boolean flag = false;
try {
flag = newFile.createNewFile();
} catch (IOException Io) {
JFrame messageDialog = new JFrame("Error!");
JOptionPane.showMessageDialog(messageDialog, "File creation failed with the following reason: \n" + Io);
}
}
这是我的新文件夹代码:
String location = getPath();
String name = JOptionPane.showInputDialog("Fill in the name of the new folder.", null);
if(name == null){
}
else {
File newFolder = new File(location + "\\" + name);
boolean flag = false;
try {
flag = newFolder.mkdir();
} catch (SecurityException Se) {
JFrame messageDialog = new JFrame("Error!");
JOptionPane.showMessageDialog(messageDialog, "Folder creation failed with the following reason: \n" + Se);
}
}
我现在卡住了,我不知道我做错了什么来摆脱拒绝访问的错误。
简要说明该程序的工作原理: 我的程序显示所选文件中所有文件夹和文件的列表。 该文件是JXploreFile类中的一个字段,名为" currentFile",其行为与文件几乎相同。 浏览文件夹时,currentFile设置为新的JXploreFile,其中包含您作为File的新文件夹。 创建新文件夹/文件时,我的程序会使用方法getPath()询问用户当前正在浏览的路径。
感谢您的帮助!
我的节目图片:
答案 0 :(得分:1)
在尝试进行任何I / O操作之前,只需检查您是否拥有权限
转到父目录(您的案例location
)
然后执行类似
的操作File f = new File(location);
if(f.canWrite()) {
/*your full folder creation code here */
} else {
}
答案 1 :(得分:0)
尝试放
String location ="c:\\user\<<youruser>>\\my documents"
或具有完全写入权限的文件夹