0

アプリに次のコードがあります。

final File f = new File(path);

try {
    boolean folderCreated = f.mkdirs();

    // if dir wasn't created this time, and doesn't exist
    if (!folderCreated && !f.exists()) {
        throw new IOException("Unable to create path");
    }
} catch (SecurityException e) {
            throw new IOException("Unable to create path");
}

(Android Studioで)findbugsを実行すると、報告されますBad Practice Bad use of return value from method Method ignores exceptional return value of java.io.File.mkdirs()

Javadoc はjava.io.File.mkdirs()、ディレクトリが作成された場合は true、失敗した場合、またはディレクトリが既に存在する場合は false を返すと述べているため、!f.exists()チェックが行われます。

私は findbugs メッセージを無視したくありません-警告でさえありませんが、戻り値が明らかにチェックされているため、これを解決する方法がわかりません。

try{...}catch (SecurityException){...}この投稿からの提案として追加したことに注意してください: https://stackoverflow.com/a/23631948/1423896、しかし違いはありません。

4

3 に答える 3

3

が falsefでもインスタンスのメソッドを呼び出していることが原因かもしれません。folderCreated代わりに、 を呼び出す前にそれを呼び出すことができますf.mkdirs()

boolean folderExisted = f.exists() || f.mkdirs();
if (!folderExisted) {
    throw new IOException("Unable to create path");
}

参照: CheckReturnAnnotationDatabase.java

于 2015-09-03T13:48:46.857 に答える
0

if条件を使用してディレクトリを作成します。そうすれば、findbug エラーを排除できます。これは機能します:

if (f.mkdir()) {
    System.out.println("directory " + f+ " created");
}
于 2017-09-25T13:08:21.377 に答える