【发布时间】: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,它不会给我所有匹配项。
-
type在URLConnection抛出异常时必须为空。 -
@Samuel 你可以给我们一个你提供的文件名称的例子。
标签: java android string string-comparison