我使用Media Recorder API创建了一个基本的录音应用程序。我试图在SD卡中创建一个文件夹,并将我录制的文件保存到该文件夹中。我通过以下代码收到此警告。
忽略File.mkdir()
// Assign random number to avoid audio file from overwriting
Long tsLong = System.currentTimeMillis()/1000;
// Specify a Location for the recorded file to be stored in the SD card
mFileName = Environment.getExternalStorageDirectory().getAbsolutePath() + "/AudioRecordTest/";
File path = new File(mFileName);
if(!path.exists()) {
path.mkdir();
}
mFileName += "/AudioRecordTest_" + tsLong.toString() + ".mp3";
如何解决此警告消息。如果有任何其他错误,请随意修改代码。
答案 0 :(得分:16)
正如 @Stephen C 建议的那样,我以这些方式处理
1)
boolean isDirectoryCreated= path.mkdir();
并忽略'isDirectoryCreated'
2)(推荐)
boolean isDirectoryCreated=path.exists();
if (!isDirectoryCreated) {
isDirectoryCreated= path.mkdir();
}
if(isDirectoryCreated) {
// do something
}
3)
if (!path.exists()) {
if(path.mkdir()){
// do something
}
}
答案 1 :(得分:14)
如果我错了,请纠正我,但我希望(编译)警告信息真的这样说:
忽略File.mkdir()的结果
......或类似的东西。它告诉您,您忽略了mkdir()
调用的结果,该调用会告诉您目录是否已创建。
避免警告的一种方法是测试结果并采取适当的行动。另一种方法是简单地将结果分配给一个临时变量,忽略它,并且(可能)稍后崩溃,因为该目录不是应该创建的。
(猜猜哪个解决方案更好......)
如果有任何其他错误,请随意修改代码。
既然你问过......对于Java变量名,使用匈牙利表示法是很糟糕的。 Java是一种强类型语言,其中所有变量都具有明确的声明类型。你不应该需要一些可怕的标识符约定的心理拐杖来告诉你变量的类型是什么。
答案 2 :(得分:1)
如果要忽略此警告,请在方法上添加: @SuppressWarnings( “ALL”)
答案 3 :(得分:0)
我创建了一个实用函数:
@SuppressWarnings("unused")
private static void IGNORE_RESULT(boolean b) {}
然后使用:
IGNORE_RESULT(path.mkdir());
我喜欢这种解决方案,因为它是自我记录。您明确表示知道结果,并且您有意忽略它。它还应在编译期间优化为NOP,以便在运行时没有不必要的测试,只是为了抑制无用的警告。