簡體   English   中英

無法在Java中創建臨時文件

[英]Unable to create temporary file in Java

我有一個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

我怎樣才能解決這個問題? 我真的很感謝任何幫助。

“ image / png”是Mime類型。 這里查看Java中的所有MimeTypes

編寫一個將mimetype轉換為文件擴展名的util。 希望這會有所幫助。

我認為后綴字符串中有一個額外的\\,可以嘗試調試並查看后綴的實際值嗎?

我試着跑:

String suffix = "\\png";

並得到相同的錯誤,但如果我這樣做

String suffix = ".png";

創建臨時文件沒有錯誤,請注意,您需要在后綴中添加一個點...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM