无法在Java中创建临时文件

时间:2018-09-27 10:56:18

标签: java file

我有一个Java方法,该方法将字节数组和String值作为参数并返回File对象。这是代码

public File createTempFile(byte[] byteArray, String fileName) throws IOException {
    String prefix = FilenameUtils.getBaseName(fileName);
    String suffix = getMimeType(byteArray);
    File tempFile = File.createTempFile(prefix, suffix, null);
    FileOutputStream fos = null;
    try {
        fos = new FileOutputStream(tempFile);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    fos.write(byteArray);
    fos.close();
    return tempFile;
}

当我尝试这样运行时

File myFile = tiedostoService.createTempFile(tiedosto.getContent(), attachment.getFileName());

我得到这样的IOException

java.io.IOException: Unable to create temporary file, C:\Users\ROSHAN~1\AppData\Local\Temp\kuva1068864619970584773image\png
at java.io.File$TempDirectory.generateFile(File.java:1921)
at java.io.File.createTempFile(File.java:2010)

从堆栈跟踪中。可以看出,它正在尝试创建一个像C:\Users\ROSHAN~1\AppData\Local\Temp\kuva1068864619970584773image\png这样的文件 而不是C:\Users\ROSHAN~1\AppData\Local\Temp\kuva1068864619970584773image.png

我该如何解决?我真的很感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

'image / png'是Mime类型。查看Java here

中的所有MimeType。

编写一个将mimetype转换为文件扩展名的util。希望这会有所帮助。

答案 1 :(得分:0)

我认为后缀字符串中有一个额外的\,您可以尝试调试并查看后缀的实际值吗?

我试图跑步:

String suffix = "\\png";

,并得到相同的错误,但如果我这样做

String suffix = ".png";

创建临时文件没有错误,请注意,您需要在后缀中添加一个点...