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 构造函数。
添加回答
举报