0

私がこの作品を書くとき

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

4 に答える 4

3

2番目のコードが実際に「例外をスローする」とは思えません。IOExceptionほとんどの場合、表示されているのは、を呼び出すときにチェックされた例外をキャッチする必要があることを警告するコンパイルエラーですcreateNewFile

「チェックされた」例外にはハンドラーが必要であるか、を介して呼び出し元のメソッドによって宣言されている必要がthrowsあります。そうしないと、コードはコンパイルされません。 IOExceptionチェックされます。 createNewFileそれを宣言しますthrows IOException。したがって、コードの2番目のブロックは正しくありません。

于 2010-08-14T05:28:49.540 に答える
1

コードの2番目の部分を次のように変更します。

                    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がスローされるため、IOExceptionをキャッチするtry / catchブロックに配置するか、コードのこの部分を使用するメソッドがthrowsIOExceptionを宣言する必要があります。

于 2010-08-14T14:19:23.653 に答える
0

File.createNewFile()は、ファイルがすでに存在する場合(または、ファイルを作成する権限がない場合)に例外をスローします。したがって、最初のコードを実行した後、test.txtを削除するのを忘れた場合、2番目のコードは失敗します。

于 2010-08-14T05:30:59.987 に答える
-1

IO例外が発生するか、ファイルが開かれているためにそのファイルを作成(書き込み)できないと思います。

于 2010-08-14T05:29:53.703 に答える