警告:File.mkdir() 被忽略

Posted

技术标签:

【中文标题】警告:File.mkdir() 被忽略【英文标题】:WARNING: File.mkdir() is ignored 【发布时间】:2015-03-10 08:34:46 【问题描述】:

我已经使用 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";

如何解决此警告消息。如有其他错误欢迎随时修改代码。

【问题讨论】:

【参考方案1】:

正如 @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
   

【讨论】:

【参考方案2】:

如果我错了,请纠正我,但我希望(编译)警告消息真的这么说:

File.mkdir() 的结果被忽略

... 或类似的东西。它告诉您您忽略了mkdir() 调用的结果,该调用告诉您是否创建了目录。

避免警告的一种方法是测试结果并采取适当的行动。另一种方法是将结果简单地分配给一个临时变量,忽略它,然后(可能)在以后崩溃,因为该目录没有在应该创建的时候创建。

(猜猜哪个解决方案更好......)


如果有任何其他错误,请随时修改代码。

既然你问了......使用匈牙利符号表示 Java 变量名是不好的风格。 Java 是一种强类型语言,其中所有变量都有明确声明的类型。你不应该需要一些可怕的标识符约定的精神拐杖来告诉你变量的类型是什么。

【讨论】:

【参考方案3】:

如果您想忽略此警告,请在方法中添加: @SuppressWarnings("全部")

【讨论】:

【参考方案4】:

我创建了一个实用函数:

@SuppressWarnings("unused")
private static void IGNORE_RESULT(boolean b) 

然后使用:

IGNORE_RESULT(path.mkdir());

我喜欢这个解决方案,因为它是自我记录的。您明确表示您知道有结果并且您故意忽略它。它还应该在编译期间优化为 NOP,这样在运行时就不会为了抑制无用的警告而进行不必要的测试。

【讨论】:

以上是关于警告:File.mkdir() 被忽略的主要内容,如果未能解决你的问题,请参考以下文章

如何杀死“未知属性'扁平'被忽略”警告?

MariaDB 警告:'root@localhost' 两者都有...密码将被忽略

警告:未知的事件处理程序属性“onHeaderClick”。会被忽略

带有 Xamarin 的 VS 2019,由于警告而无法调试:调试符号文件无效并被忽略

禁用 Maven 警告消息 - “选定的战争文件包括将被忽略的 WEB-INF/web.xml”

禁止显示状态 警告 C6031 返回值被忽略: “scanf“.