mkdir()Java不断抛出IOException



我正试图在我当前的工作目录中创建一个带有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(...);
}

你不需要所有的输出。

相关内容

  • 没有找到相关文章

最新更新