gpt4 book ai didi

java - .matches ("text/.*")抛出 NullPointerException

转载 作者:行者123 更新时间:2023-12-02 07:30:35 24 4
gpt4 key购买 nike

我有一个 FilenameFilter,它可以过滤除具有 mime 类型文本和所有子类型(或应该以任何方式...)的目录和文件之外的所有内容,但是当我使用 .matches() 函数时,它会抛出 NullPointerException。当我研究它时,当正则表达式语法不正确时,.matches() 函数会抛出 NullPointerException。

FilenameFilter filter = new FilenameFilter()
{
public boolean accept(File dir, String name)
{
File tmp = new File(dir.getAbsolutePath() + "/" + name);
if (tmp.isDirectory())
{
return true;
}
else
{
String type = null;
String extension = MimeTypeMap.getFileExtensionFromUrl(dir.getAbsolutePath() + "/" + name);
if (extension != null)
{
MimeTypeMap mime = MimeTypeMap.getSingleton();
type = mime.getMimeTypeFromExtension(extension);
}
return type.matches("text/.*");
}
}
};

正在传递的文件没有 mime,因此输出为 null。这是修复方法:

FilenameFilter filter = new FilenameFilter()
{
public boolean accept(File dir, String name)
{
File tmp = new File(dir.getAbsolutePath() + "/" + name);
if (tmp.isDirectory())
{
return true;
}
else
{
String type = "";
String extension = MimeTypeMap.getFileExtensionFromUrl(dir.getAbsolutePath() + "/" + name);
if (extension != null)
{
MimeTypeMap mime = MimeTypeMap.getSingleton();
type = mime.getMimeTypeFromExtension(extension);
if (type != null)
{
return type.matches("text/.*");
}
else
{
return false;
}
}
else
{
return false;
}
}
}
};

这是 eclipse 的描述: String android.webkit.MimeTypeMap.getMimeTypeFromExtension(String 扩展名)

public String getMimeTypeFromExtension(字符串扩展名)自:API 级别 1返回给定扩展名的 MIME 类型。

参数扩展名 不带前导“.”的文件扩展名

返回给定扩展名的 MIME 类型,如果没有,则为 null。

最佳答案

如果您的字符串变量 type 没有进入此 if 语句,则它可能为 null:

  if (extension != null)
{
MimeTypeMap mime = MimeTypeMap.getSingleton();
type = mime.getMimeTypeFromExtension(extension)
}

因此,您很可能会遇到 NullPointerException

关于java - .matches ("text/.*")抛出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12966241/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com