Java 确保用户输入特定的文件类型
我有一个JFileChooser(此处未显示),它接受用户的文件输入。我想确保用户只输入一个.txt文件。是否有一个函数允许使用JFileChooser或其他可能的解决方案对此进行验证。我认为:Java 确保用户输入特定的文件类型,java,jfilechooser,Java,Jfilechooser,我有一个JFileChooser(此处未显示),它接受用户的文件输入。我想确保用户只输入一个.txt文件。是否有一个函数允许使用JFileChooser或其他可能的解决方案对此进行验证。我认为: if (selectedFile != null && selectedFile.getName().endsWith(".txt")){ //action } else { JOptionPane.showMessageDialog(null, "You have no
if (selectedFile != null && selectedFile.getName().endsWith(".txt")){
//action
} else {
JOptionPane.showMessageDialog(null, "You have not selected a .txt file. Please choose a correct file type to continue.);
}
但是,如果可能的话,我希望这样,即使文件名中没有明确以.txt结尾,它仍然会被接受,但它必须仍然是一个文本文件。请参阅JavaDoc以与JFileChooser一起使用
您需要实现自定义文件筛选器,它不仅会检查文件扩展名,还会检查文件内容是否为文本。回答,如何检测文件是否为.txt文件您可以使用Apache Tika库进行此操作
public static void main(String[] sss) {
try {
// System.out.println(ContainsMedia(new File("D:\\test")));
Tika tika = new Tika();
String contentTypeDetected = "";
File dir = new File("D:\\test");
for (String dir2 : dir.list()) {
try {
contentTypeDetected = tika.detect(new File(dir,dir2));
System.out.println(contentTypeDetected);
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
输出:文本/纯文本
尽管该目录中的文件是文本文件,但我将其重命名为.exe文件和.rar文件,但apache tikka告诉了我真相
下载这里是jar的链接,下载后将其添加到类路径中
其次,如果你想让他只选择txt文件类型,你可以这样做
fileChooser.setFileFilter(new FileFilter() {
@Override
public boolean accept(File f) {
if (f.isDirectory())
return true;
String name = f.getName().toLowerCase();
return name.endsWith(".txt")
;
}
@Override
public String getDescription() {
return "only text file";
}
});
是的,这是可能的。JFileChooser提供您所需的一切。
例如:
jfc.setAcceptAllFileFilterUsed(false);
jfc.setFileFilter(new FileFilter()
{
@Override
public String getDescription()
{ return "*" + fileExtension; }
@Override
public boolean accept(File f)
{
return f.isDirectory() || f.getName().toLowerCase().endsWith(fileExtension));
}
});
(jfc是以前创建的JFileChooser对象。)这是一个非常简单的例子。
如您所见,您必须添加一个新的文件过滤器来解决您的问题。
这个对象得到了一个名为“accept”的方法,它只返回一个布尔值
(是否为“有效文件”) 但是,您应该查看Java文档中关于它的所有可能性。
或者使用Oracle提供的这些教程:
顺便说一句,您无法确保所选文件仅包含文本。
之后你必须检查一下 祝你好运
(这并不难实现;D)非常感谢您的帮助:)