如何在不知道文件扩展名的情况下实例化java.io.File对象?

时间:2018-01-02 10:54:16

标签: java java-io

我在我的数据库中存储图像的文件名( user_id.extension ,例如14.png)。

假设我需要检索一个文件并将其写入流。但是如何在不知道文件扩展名的情况下创建java.io.File对象(图像可以是jpg,png等)?现在在我的数据库中只有扩展名为.png的图像,我这样做:

File file = new File(pathToAvatarFolder + File.separator + user.getId() + ".png");

这有一个优雅的解决方案吗?我想到的只有蛮力解决方案:

List<String> imageExtensions = new ArrayList<>();
imageExtensions.add(".png");
imageExtensions.add(".jpg");
imageExtensions.add(".jpeg");

File file;
for(int i = 0; i < imageExtensions.size(); i++) {
    file = new File(pathToAvatarFolder + File.separator + user.getId() + imageExtensions.get(i));
    if (file.exists()) {
        break;
    }

    file = null;
}

为了清楚起见,我需要使用没有扩展名的路径名实例java.io.File对象。

1 个答案:

答案 0 :(得分:1)

import java.nio.*;
import java.nio.file.*;

Files.probeContentType((new File("filename.ext")).toPath());

返回文件的类型。对于png,它将是image / png。