【问题标题】:Java string comparison failsJava 字符串比较失败
【发布时间】:2016-02-06 02:32:30
【问题描述】:

我已经在我的代码中寻找了几个小时的错误,但我根本找不到它。 我可以找到错误在我的代码的这一部分:

public String getType(File file)
{
    String type = null;

    try
    {
        type = URLConnection.guessContentTypeFromName(file.getAbsolutePath());
        if (type.startsWith("image"))
        {
            Log.d(logTag, file.getAbsolutePath());
        }
    }
    catch (Exception e){}

    return type;
}

这工作得很好,但是当我直接在 return 语句之前进行字符串比较时,我没有得到所有以“image”开头的类型。

当我不使用异常处理块时,也会发生同样的事情。

我还显示了字符串的整数值,它们确实相等。

以防万一:这是一个 Android 项目。

编辑: 例如,我得到了

/storage/emulated/0/WhatsApp/Media/WhatsApp Images/IMG-20150906-WA0000.jpg

在这两种情况下,我收到

/storage/emulated/0/Profilbilder/18186367897.jpg

仅当我使用上面的代码时。并且这个文件没有抛出异常。

编辑: 我创建了一个新项目,它现在按预期工作。由于我的新代码不完全相同但几乎相同,我无法判断这是逻辑错误还是编译器错误

【问题讨论】:

  • 您是否尝试在您的 catch 块中打印 e 以查看它是否有时会抛出?
  • 请给出一些您希望输入但不能输入的示例。
  • @Turix。是的,但仅适用于没有适当扩展名的文件。正如我所说,这部分工作绝对正确。但是,如果我在 try 块之外调用startsWith,它不会给我所有匹配项。
  • typeURLConnection 抛出异常时必须为空。
  • @Samuel 你可以给我们一个你提供的文件名称的例子。

标签: java android string string-comparison


【解决方案1】:

当file为null或URLConnection抛出异常时,type必须为null,则type.startsWith("image")上会出现nullpointerException

【讨论】:

  • 是的,没错,但这不是问题所在。通过这种方式,我确实收到了所有以“image”开头的类型
  • 如果在 URLConnection 上捕获到异常,则不会发生 NullPointerException
  • 确实我只得到了 NullPointerExceptions。但正如我所说,这不是我的问题的一部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-05
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多