Требуется пояснение по отношению к этому коду в Java - PullRequest
0 голосов
/ 14 августа 2010

когда я пишу этот кусок

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-диске

но когда я использую это

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 ]

3 голосов
/ 14 августа 2010

Я сомневаюсь, что второй кусок кода на самом деле «выбрасывает исключение»; Скорее всего, вы видите ошибку компиляции, предупреждающую, что вы должны перехватить проверенное исключение IOException при вызове createNewFile.

«проверенное» исключение должно иметь обработчик или быть объявлено вызывающим методом через throws, иначе ваш код не будет компилироваться. IOException проверено. createNewFile заявляет, что это throws IOException. Поэтому ваш второй блок кода неверен.

1 голос
/ 14 августа 2010

Измените вторую часть вашего кода следующим образом:

                    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();
                    }

Вы должны сделать это, потому что если вы не включите функцию f.createNewFile () в блоке try / catch, ваш код не будеткомпиляции.Поскольку использование f.createNewFile () генерирует IOException, вам нужно либо поместить его в блок try / catch, перехватывающий IOException, либо метод, использующий эту часть кода, должен объявить throws IOException.

0 голосов
/ 14 августа 2010

File.createNewFile () генерирует исключение, если файл уже существует (или у вас нет права на создание файла). Так что после запуска первого куска кода ... второй не получится, если вы забыли удалить test.txt.

0 голосов
/ 14 августа 2010

Полагаю, вы получаете исключение ввода-вывода или не можете создать (записать) этот файл, возможно, потому что он открыт.

...