簡體   English   中英

java.io.IOException: 沒有那個文件或目錄

[英]java.io.IOException: No such file or directory

我在使用 java 保存/創建文件時遇到問題。

java.io.IOException: No such file or directory
at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[na:1.7.0_79]

我的環境正在使用 Linux,但在 Windows(我嘗試存儲文件的地方)上有一個掛載。 每當我嘗試創建文件名包含中文字符時,它都會出現。

會不會因為 Linux 和 Windows 之間的編碼差異而發生這種情況?

當我嘗試在類似的操作系統中運行和存儲時(在 Linux 中運行應用程序,在 Linux 中存儲,對於 Windows 也是如此)它運行順利。

非常感謝任何幫助。

我用來創建文件的代碼

        File imgPath = new File(fullpath.toString());

        if (!imgPath.exists()){                 
            FileUtils.forceMkdir(imgPath);
            imgPath.setWritable(true, false);
        }

        fullpath.append(File.separator).append(fileName);

        outputStream = new FileOutputStream(new File(fullpath.toString()));

非常感謝。

注意:我是一個相當新的用戶,還不能直接發表評論(目前只能對我的問題和答案發表評論),所以我將其作為答案發布。

Windows 使用 UTF-16 而 Linux 使用 UTF-8; (考慮到您還沒有安裝任何額外的東西來改變任何東西)UTF-8 和 UTF-16 支持相同的字符范圍。 但是,我沒有記錯,它與 memory(UTF-8 從 8 位開始,UTF-16 從 16 位開始?)有關。 無論如何,它們的存儲/讀取方式略有不同。 然后,InputStreamReader 將字符從其指定編碼的外部表示形式轉換為內部表示形式。 在這個 stackoverflow 帖子( UTF-8 和 UTF-16 之間的區別? )中提到了它以字節為單位的確切方式。 它們在基本方面是相同的,但在其他方面卻有所不同,例如漢字。 會建議沿着這條線尋找解決方案(我必須到達 class。),我可能完全錯了。 但這可能是一個很好的起點。 祝你好運。

暫無
暫無

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

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