mkdir()Java不断抛出IOException

时间:2014-03-27 00:17:55

标签: java file mkdir

我正在尝试使用url的标题在我当前的工作目录中创建一个目录。但是,我正在将该url转换为哈希值,然后转换为十六进制,因此我尝试创建的目录的名称类似于273212b1。但是,无论何时执行代码,它都会抛出IOException而无法生成目录。我不确定我做错了什么。

即使我做了类似File directory = new File(" Users / whatever / Documents" + dirname)的事情;它没有用。

2 个答案:

答案 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);
    }
}