我正试图在我当前的工作目录中创建一个带有url标题的目录。然而,我正在将该url转换为哈希,然后再转换为十六进制,因此我试图创建的目录的名称类似于273212b1。然而,每当我执行代码时,它都会抛出IOException,并且无法创建目录。我不确定我做错了什么。
即使我做了一些类似File directory=new File("Users/anything/Documents"+dirname(的操作;它不起作用。
您不是使用哈希或十六进制创建目录,而是尝试使用URL创建目录。以下是相关步骤:
调用该方法时,s=某个URL:
public static File mkdir(String s) throws IOException
您将URL复制到一个名为dirname:的变量中
String dirname = s;
您将s设置为哈希的十六进制(不会更改目录名的值(:
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(...);
}
你不需要所有的输出。