需要对Java中的这段代码进行澄清

时间:2010-08-14 05:25:17

标签: java file-handling

当我写这篇

String path="d:\\test.txt";
    boolean chk;
    File f=new File(path);

    try
    {
        chk=f.createNewFile();
    }catch(IOException e)
    {
        chk=false;
        e.printStackTrace();
    }


    if(chk)
        System.out.println("file created.");
    else
        System.out.println("file not created");

文件在d-drive

中创建

但是当我使用这个

String path="d:\\test.txt";
    File f=new File(path);

    if(f.createNewFile())
        System.out.println("file created.");
    else
        System.out.println("file not created");

它抛出异常。

请赐教我这个

4 个答案:

答案 0 :(得分:3)

我怀疑第二段代码实际上是“抛出异常”;您可能看到的最有可能是编译错误,警告您在调用IOException时必须抓住已检查的例外createNewFile

“已检查”异常必须具有处理程序或由调用方法通过throws声明,否则您的代码将无法编译。 IOException已经过检查。 createNewFile声明它throws IOException。因此,您的第二个代码块不正确。

答案 1 :(得分:1)

将代码的第二部分更改为以下内容:

                    String path = "d:\\test.txt";
                    File f = new File(path);

                    try {
                        if (f.createNewFile())
                            System.out.println("file created.");
                        else
                            System.out.println("file not created");
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }

你需要这样做,因为如果你没有在try / catch块中使用f.createNewFile(),你的代码将无法编译。由于f.createNewFile()的使用抛出IOException,你需要将它放在try / catch块中捕获IOException或使用这部分代码的方法需要声明抛出IOException。

答案 2 :(得分:0)

如果文件已存在(或者您没有权限创建文件),File.createNewFile()会抛出异常。因此,在运行第一段代码后...如果您忘记删除test.txt,则第二段将失败。

答案 3 :(得分:-1)

我猜你得到一个IO异常,或者你不能创建(写)该文件,可能是因为它被打开了。