我想在我的当前工作目录中创建一个具有url标题的目录。但是,我将该网址转换为散列,然后转换为十六进制,因此我尝试创建的目录名称类似于273212b1。但是,无论何时执行代码,它都会引发IOException,并且无法创建目录。我不确定我做错了什么。mkdir()Java一直抛出IOException
即使我做了类似File directory = new File(“Users/whatever/Documents”+ dirname);它不起作用。
我想在我的当前工作目录中创建一个具有url标题的目录。但是,我将该网址转换为散列,然后转换为十六进制,因此我尝试创建的目录名称类似于273212b1。但是,无论何时执行代码,它都会引发IOException,并且无法创建目录。我不确定我做错了什么。mkdir()Java一直抛出IOException
即使我做了类似File directory = new File(“Users/whatever/Documents”+ dirname);它不起作用。
您不是使用散列或十六进制创建目录,而是尝试使用URL创建目录。以下是相关步骤:
被称为带S的方法=一些URL:
public static File mkdir(String s) throws IOException
您复制网址到一个变量称为目录名称:
String dirname = s;
您集合S是一个十六进制(不改变dirname的值):
s = Integer.toHexString(dirname.hashCode());
您创建一个File对象,代表有一个名字一个URL目录:
File directory = new File(dirname);
当您尝试创建一个目录,它是不会,因为所有的URL是无效的目录名中的字符的工作。
你应该这样做:
File directory = new File(s);
一旦你解决这个问题,你再会要处理的目录中的双创建如下:
if (directory.exists()) {
System.out.println("Directory already exists!");
} else {
success = directory.mkdir();
if (success) {
System.out.println("Successful");
} else {
throw new IOException("can't make directory for " + s);
}
}
success = directory.mkdir();
和
if (!directory.mkdir())
正在创建的目录两次,或尝试。第二次,它会失败,并抛出异常。
检查你的逻辑。这是多余的。你可以减少大部分到
if (!directory.exists() && !directory.mkdir())
{
throw new IOException(...);
}
你不需要所有的输出。
什么异常_说_? –
尝试使用'directory.mkdirs();' 因为也许你还需要一些中间目录..(不只是一个级别的目录) –
做一个System.out.println完整路径你尝试创建该文件,也许可以让你知道什么是错误的线索 –