首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JAVA: FileInputStream和FileOutputStream

JAVA: FileInputStream和FileOutputStream
EN

Stack Overflow用户
提问于 2012-05-08 12:48:48
回答 3查看 10.3K关注 0票数 6

我有一个关于输入流和输出流的奇怪的东西,我就是不能理解。我使用inputstream从如下资源中读取属性文件:

代码语言:javascript
运行
复制
Properties prop = new Properties();
InputStream in = getClass().getResourceAsStream( "/resources/SQL.properties" );
rop.load(in);
return prop;

它找到了我的文件,并成功地对其进行了reds。我试着像这样写修改后的设置:

代码语言:javascript
运行
复制
prop.store(new FileOutputStream( "/resources/SQL.properties" ), null);

我在存储的时候遇到了奇怪的错误:

代码语言:javascript
运行
复制
java.io.FileNotFoundException: \resources\SQL.properties (The system cannot find the path specified)

那么为什么属性的路径被改变了呢?如何解决这个问题?我在Windows上使用Netbeans

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-08 13:04:08

也许它是有效的

代码语言:javascript
运行
复制
try
{
java.net.URL url = this.getClass().getResource("/resources/SQL.properties");

java.io.FileInputStream pin = new java.io.FileInputStream(url.getFile());

java.util.Properties props = new java.util.Properties();

props.load(pin);
}
catch(Exception ex)
{
ex.printStackTrace();
}

并检查下面的url

getResourceAsStream() vs FileInputStream

票数 3
EN

Stack Overflow用户

发布于 2012-05-08 12:51:19

问题是,getResourceAsStream()解析您提供的相对于类路径的路径,而new FileOutputStream()直接在文件系统中创建文件。它们具有不同的路径起点。

通常,您不能写回加载资源的源位置,因为它可能根本不存在于文件系统中。例如,它可能在jar文件中,并且JVM不会更新该jar文件。

票数 6
EN

Stack Overflow用户

发布于 2012-05-08 13:12:15

请查看此问题:How can I save a file to the class path

这个答案是https://stackoverflow.com/a/4714719/239168

总而言之:您不能总是简单地回存从类路径读取的文件(例如,jar中的文件)

但是,如果它确实只是类路径上的一个文件,则上面的答案有一个很好的方法

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10492698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档