4 回答

TA貢獻1943條經驗 獲得超7個贊
當 Java 以 的形式談論文件名時String
,文檔通常說
系統相關的文件名
因此它期待一個“日常”文件名,比如filename.ext
,或者類似c:\some\path\filename.ext
Windows 或/some/path/filename.ext
類 Unix 的文件名(這個實際上適用于兩者,Java 也接受/
Windows 上的路徑分隔符)
對于帶有file://
協議的文件名,使用URI
并將其包裝成File
:
FileWriter writer = new FileWriter(new File(new URI(outputPath)));

TA貢獻1853條經驗 獲得超9個贊
簡單的。您必須遵守文檔。并且文檔明確指定: https://docs.oracle.com/javase/7/docs/api/java/io/FileWriter.html#FileWriter(java.io.File)
fileName - String The system-dependent filename.
系統依賴意味著:
/path/to/file
在 Linux / Mac 上C:\path\to\file
在 Windows 上
file://
不是文件名,而是 URL,最常用于瀏覽器。

TA貢獻1820條經驗 獲得超9個贊
javadoc說:
public FileWriter(String fileName) 拋出 IOException
構造一個給定文件名的 FileWriter 對象。
因此:使用此接口時,您不能傳遞 URL、URI 或任何合法可以以file://
.
換句話說:這按設計工作。此構造函數需要一個簡單明了的文件名。
如果您有類似 URL 的字符串,請嘗試以下操作:
URL fileURL = new URL("file://C:/whatever.txt");InputStream is = fileURL.openStream();
或者簡單地從您獲得的 UIR 創建一個 File 對象。然后將該文件對象傳遞給略有不同的 FileWriter 構造函數。
添加回答
舉報