我正在尝试使用url的标题在我当前的工作目录中创建一个目录。但是,我正在将该url转换为哈希值,然后转换为十六进制,因此我尝试创建的目录的名称类似于273212b1。但是,无论何时执行代码,它都会抛出IOException而无法生成目录。我不确定我做错了什么。
即使我做了类似File directory = new File(" Users / whatever / Documents" + dirname)的事情;它没有用。
答案 0 :(得分:3)
success = directory.mkdir();
和
if (!directory.mkdir())
您正在创建目录两次,或者尝试。第二次,它将失败,并抛出异常。
检查你的逻辑。这是多余的。您可以将大部分内容减少到
if (!directory.exists() && !directory.mkdir())
{
throw new IOException(...);
}
您不需要所有输出。
答案 1 :(得分:2)
您没有使用散列或十六进制创建目录,而是尝试使用URL创建目录。以下是相关步骤:
使用s = some URL:
调用该方法public static File mkdir(String s) throws IOException
将URL复制到名为dirname:
的变量中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);
}
}