为了账号安全,请及时绑定邮箱和手机立即绑定

FileWriter 不使用 URL 中的协议写入文件

FileWriter 不使用 URL 中的协议写入文件

慕桂英4014372 2022-12-15 16:37:20
我正在使用下面的代码写入文件。FileWriter writer = new FileWriter(outputPath);writer.append(prettyJson);writer.flush();writer.close();我注意到内容没有写入以“file://”开头的文件路径。这有什么具体原因吗?
查看完整描述

4 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

当 Java 以 的形式谈论文件名时String,文档通常说

系统相关的文件名

因此它期待一个“日常”文件名,比如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)));


查看完整回答
反对 回复 2022-12-15
?
暮色呼如

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,最常用于浏览器。


查看完整回答
反对 回复 2022-12-15
?
哔哔one

TA贡献1854条经验 获得超8个赞

如果您尝试使用相对路径,请执行以下操作:

FileWriter fw = new FileWriter("./" + fileName, true);


查看完整回答
反对 回复 2022-12-15
?
慕妹3146593

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 构造函数。


查看完整回答
反对 回复 2022-12-15
  • 4 回答
  • 0 关注
  • 154 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号