2016-08-16 13 views
0

いくつかの方法では警告が表示されます。これは拡張されたときのことです。 次のコード(mkDirs())が警告を"メソッドの結果は無視されます" - これはどういう意味ですか?

if (!myDir.exists()) { 
    myDir.mkdirs(); 
} 

レポートその呼び出しの結果は無視され、特定のメソッドへの呼び出しを与えます。検査の設定で指定されたメソッドとorg.jetbrains.annotations.Contract(pure = true)で注釈が付けられたメソッドの両方がチェックされます。多くのメソッドでは、結果を無視することは完全に正当ですが、いくつかのメソッドではほとんど間違いです。呼び出しの結果を無視するのがエラーである可能性が高いメソッドの例には、実際に読み込まれたバイト数を返すjava.io.inputStream.read()、java.lang.Stringまたはjava.math.BigIntegerのメソッドこれらのメソッドはすべて副作用がなく、無視すると無意味です。

この意味は?どのようにそれを避けるために?どのように対処すべきか?

+0

ディレクトリが正常であるときにtrueを返します作成され、失敗するとfalseになります。 2番目のケースでは、読み取り/書き込みアクセス権(API 23+でのランタイム)、ディレクトリが既に存在するなど、多くの理由があります。ディレクトリが実際に作成されているかどうかを確認する方が良いです。 –

答えて

3

場合は(コンパイル)、警告メッセージが本当にこれを言うことを利用すべきです:

File.mkdir()の結果無視されます

そのようなものです。ディレクトリが作成されたかどうかを示すmkdir()呼び出しの結果を無視していることを伝えています。

警告を回避する1つの方法は、結果をテストして適切に動作させることです。別の方法としては、一時変数に結果を代入し、無視し、ディレクトリが作成されたはずのときにディレクトリが作成されなかったために後でクラッシュする可能性があります。

他の間違いがあれば、コードを自由に修正してください。

あなたが質問したところでは、Java変数名にハンガリー表記を使用するのは難しいです。 Javaは強く型付けされた言語であり、すべての変数に明確な宣言型があります。あなたは、変数の型が意図されていることを伝えるために、いくつかのひどい識別子の規則の精神的な松葉杖を必要とすべきではありません。

あなたはこれらの方法

1に扱うことができ

boolean isDirectoryCreated= path.mkdirs(); 

2 'isDirectoryCreated' を無視する)(推奨)

boolean isDirectoryCreated= path.exists(); 
if (!isDirectoryCreated) { 
    isDirectoryCreated= path.mkdirs(); 
} 
if(isDirectoryCreated) { 
    // do something 
} 
+1

これは 'boolean isDirectoryCreated = path.exists()||として単純化できます。 path.mkdirs(); ' –

0

この方法では、ディレクトリがまだ作成されていない場合は、指定したパスでディレクトリを作成していることを示唆しています。この関数は新しいものを作成します。天気ディレクトリが存在するか作成されています。低ストレージには、指定されたパスに作成されていない、あなたはそのディレクトリ内のファイルに内容を書き込むしようとしていることがioException.Soをスローします条件

if(myDir.mkdirs()) 
{ 
    //execute what ever you want to do 
} 
else 
{ 
    // show error message for any failure. 
} 
関連する問題