ファイルが存在しない場合にファイルの作成を処理するための推奨される方法

joshua0823

ファイルが存在するかどうかをチェックするプログラムを書いています。存在しない場合は作成します。この後、ファイルを読み取ります。スキャナーを作成しようとすると、Eclipseで「未処理のFileNotFoundExceptionエラー」が発生します。コードスニペットは次のとおりです。

if(!NETWORK_FILE.exists()){
    try {
        NETWORK_FILE.createNewFile();
    }catch(IOException e) {
        e.printStackTrace();
    }
}else{
    //"ERROR" IS ON THE LINE BELOW
    Scanner read = new Scanner(NETWORK_FILE);

    while(read.hasNextLine()) {
        String fileSerial = read.nextLine();
        if(fileSerial.equals(serial)) {
            System.out.println("serial already exists");
            return;
        }
    }
    read.close();
}

この直前にファイルを具体的にチェックして作成するので、FileNotFoundExceptionをキャッチするのはかなり無意味だと思います。これを行うための「好ましい方法」はありますか?

davidxxx

あなたの質問は理にかなっています。
ただし、チェックされた例外はこのように機能します。
コンパイラーは、個別の論理処理間で関連付けを行いません。
また、アプリケーションはマルチスレッドであり、ファイルシステムは複数のプロセスで共有されている可能性があることにも注意してください。
一度に存在するファイルは、1秒後には存在しない可能性があります。

この特定のケースでは、たとえばcreateScannerWithExistingFile()、をスローする特定のメソッドで例外の処理を抽出すると思いますRuntimeExceptionこのcatchステートメントを分離することにより、コードロジック全体がより明確になります

if (!NETWORK_FILE.exists()) {
   ...
}

else {
    Scanner read = createScannerWithExistingFile(NETWORK_FILE);
    while (read.hasNextLine()) {
        String fileSerial = read.nextLine();
        if (fileSerial.equals(serial)) {
            System.out.println("serial already exists");
            return;
        }
    }
    read.close();

}

private Scanner createScannerWithExistingFile(File file) {
    try {
        return new Scanner(file);
    } catch (FileNotFoundException e) {     
        throw new RuntimeException("file " + f + " should exist", e);
    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ファイルが存在しない場合に空のファイルを作成する方法

分類Dev

文字列が存在しない場合にのみファイルにテキストを追加するためのより洗練されたアプローチ?

分類Dev

スクリプトで処理されている場合にファイルの名前を保存する方法

分類Dev

.aspxファイルの分離コードファイルが欠落している場合の推奨される回避策は何ですか?

分類Dev

ファイルを作成するためのディレクトリが存在しない場合、どうすれば作成できますか?

分類Dev

outputstreamにファイルが存在しない場合、どのようにファイルを作成させるのですか?

分類Dev

python-特にファイルが存在する場合の例外処理

分類Dev

存在するが変更日が異なる場合に、Robocopy を介してコピーされたファイルの名前を変更する方法

分類Dev

ユーザーにファイル名とパスの入力を求め、ファイルが存在するかどうかをテストし、存在しない場合はその名前で空のファイルを作成します

分類Dev

googletestソースファイルを含めることが推奨されるのはなぜですか

分類Dev

Jenkinsを使用してwarファイルをTomcatにデプロイするための推奨される方法は?

分類Dev

ノードjsを使用して同じ名前のファイルが存在する場合のファイルアップロードの処理方法

分類Dev

まだ存在しない場合にのみJavaでファイルを作成する方法

分類Dev

Powershellで、ファイルが既に存在する場合、ファイルの新しいコピーをロールするためにファイルをコピーして貼り付けるにはどうすればよいですか?

分類Dev

NodeJSファイルストリーム-ファイルが存在しない場合にファイルを作成する方法は?

分類Dev

ファイルがない場合の `*`展開の処理方法

分類Dev

アップロードしたファイルをサーブレットアプリケーションに保存するための推奨される方法

分類Dev

接続文字列のパスが存在しない場合にOLEDBが新しいExcelファイルを作成しないようにする方法

分類Dev

ファイルがすでに存在する場合、ファイルをコピーするときにWindowsのファイルに対して間違った日付が作成されました

分類Dev

ファイルが存在しない場合にdownloadHandlerを終了する方法

分類Dev

ファイル名はtableviewerに表示されますが、特定の列を選択すると、Eclipse e4でファイルを処理するためにファイルの場所を取得する必要がありますか?

分類Dev

テキストファイル内の特定のものを読むための推奨される方法

分類Dev

ファイルを作成するたびに、拡張子に〜が追加された新しいファイルが作成されるのはなぜですか

分類Dev

Azure DataLakeStoreファイルの内容を解決する方法-ファイルに追加された処理?

分類Dev

GenerateTableFetchによって作成されたすべてのファイルを見つける方法が処理されました

分類Dev

Powershellのファイルが存在しない場合、ファイルに行を追加するにはどうすればよいですか?

分類Dev

Pythonでファイルのようなストリームをリダイレクトするための推奨される方法は?

分類Dev

ElasticBeanstalkにファイルを保存するための推奨事項

分類Dev

ファイルがターゲットディレクトリに存在しない場合にのみ、無限に実行されるバッチファイルにファイルをコピーするにはどうすればよいですか?

Related 関連記事

  1. 1

    ファイルが存在しない場合に空のファイルを作成する方法

  2. 2

    文字列が存在しない場合にのみファイルにテキストを追加するためのより洗練されたアプローチ?

  3. 3

    スクリプトで処理されている場合にファイルの名前を保存する方法

  4. 4

    .aspxファイルの分離コードファイルが欠落している場合の推奨される回避策は何ですか?

  5. 5

    ファイルを作成するためのディレクトリが存在しない場合、どうすれば作成できますか?

  6. 6

    outputstreamにファイルが存在しない場合、どのようにファイルを作成させるのですか?

  7. 7

    python-特にファイルが存在する場合の例外処理

  8. 8

    存在するが変更日が異なる場合に、Robocopy を介してコピーされたファイルの名前を変更する方法

  9. 9

    ユーザーにファイル名とパスの入力を求め、ファイルが存在するかどうかをテストし、存在しない場合はその名前で空のファイルを作成します

  10. 10

    googletestソースファイルを含めることが推奨されるのはなぜですか

  11. 11

    Jenkinsを使用してwarファイルをTomcatにデプロイするための推奨される方法は?

  12. 12

    ノードjsを使用して同じ名前のファイルが存在する場合のファイルアップロードの処理方法

  13. 13

    まだ存在しない場合にのみJavaでファイルを作成する方法

  14. 14

    Powershellで、ファイルが既に存在する場合、ファイルの新しいコピーをロールするためにファイルをコピーして貼り付けるにはどうすればよいですか?

  15. 15

    NodeJSファイルストリーム-ファイルが存在しない場合にファイルを作成する方法は?

  16. 16

    ファイルがない場合の `*`展開の処理方法

  17. 17

    アップロードしたファイルをサーブレットアプリケーションに保存するための推奨される方法

  18. 18

    接続文字列のパスが存在しない場合にOLEDBが新しいExcelファイルを作成しないようにする方法

  19. 19

    ファイルがすでに存在する場合、ファイルをコピーするときにWindowsのファイルに対して間違った日付が作成されました

  20. 20

    ファイルが存在しない場合にdownloadHandlerを終了する方法

  21. 21

    ファイル名はtableviewerに表示されますが、特定の列を選択すると、Eclipse e4でファイルを処理するためにファイルの場所を取得する必要がありますか?

  22. 22

    テキストファイル内の特定のものを読むための推奨される方法

  23. 23

    ファイルを作成するたびに、拡張子に〜が追加された新しいファイルが作成されるのはなぜですか

  24. 24

    Azure DataLakeStoreファイルの内容を解決する方法-ファイルに追加された処理?

  25. 25

    GenerateTableFetchによって作成されたすべてのファイルを見つける方法が処理されました

  26. 26

    Powershellのファイルが存在しない場合、ファイルに行を追加するにはどうすればよいですか?

  27. 27

    Pythonでファイルのようなストリームをリダイレクトするための推奨される方法は?

  28. 28

    ElasticBeanstalkにファイルを保存するための推奨事項

  29. 29

    ファイルがターゲットディレクトリに存在しない場合にのみ、無限に実行されるバッチファイルにファイルをコピーするにはどうすればよいですか?

ホットタグ

アーカイブ