4 回答
TA貢獻1943條經驗 獲得超7個贊
當 Java 以 的形式談論文件名時String,文檔通常說
系統相關的文件名
因此它期待一個“日?!蔽募热?code>filename.ext,或者類似c:\some\path\filename.extWindows 或/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 構造函數。
添加回答
舉報
