Java 在eclipse中写入文件(本地计算机)是可行的,而在JAR中则不可行

Java 在eclipse中写入文件(本地计算机)是可行的,而在JAR中则不可行,java,eclipse,file,jar,Java,Eclipse,File,Jar,我有一个小的可运行JAR应用程序,可以创建一个文件 它可以从eclipse中工作,但不能从JAR中工作 OutputStream os=new FileOutputStream("C:\\temp\\props.xml"); TransformerFactory tf=TransformerFactory.newInstance(); Transformer trans=tf.newTransformer(); trans.transform(new DOMSource(doc), new S

我有一个小的可运行JAR应用程序,可以创建一个文件

它可以从eclipse中工作,但不能从JAR中工作

OutputStream os=new FileOutputStream("C:\\temp\\props.xml"); 
TransformerFactory tf=TransformerFactory.newInstance();
Transformer trans=tf.newTransformer();
trans.transform(new DOMSource(doc), new StreamResult(os));
并没有错误,并没有中断,用户消息会像创建文件一样显示,但并没有文件

存在类似的主题:,但我的问题没有解决方案

这可能是一些文件/文件夹的权限问题

有没有一种方法可以允许从JAR写入文件

我尝试创建一个java.policy文件:

grant
{
 permission java.io.FilePermission "C:\\xxx", "write";
};
我将该策略文件放在我的JAR所在的同一个文件夹中,但没有任何帮助

编辑: 读书是个问题。我在我的项目中放置了一些文件,并尝试如下方式读取:

File file=new File("someFile.txt"); 
FileInputStream file_inputstream=new FileInputStream(file);

eclipse还可以,但JAR不可以。当我将此文件放在JAR外部并使用apsolute file path读取它时,它工作了。

如果它在Eclipse中工作,则不太可能是文件/文件夹权限问题,除非从Eclipse和JAR运行时尝试写入文件的路径不同。在代码创建文件实例后,尝试在该实例上使用File.getAbsolutePath来显示完整路径。可能在这两种情况下都在创建文件,但不是在您期望的位置。顺便说一句,如果您不显示代码,人们很难判断出问题所在。如果您显示实际创建文件的代码,这将非常有用?您可能希望在写入文件时通过sysinternals运行Process Explorer。这将监视文件系统访问,您可以了解出了什么问题。即使策略文件是这样做的正确方法,我也不认为Java会在您放置它的目录中查找它。您指定了绝对路径还是相对路径?可能文件只是在您不期望的位置创建的…您是否从同一个源读取?您不会在代码片段中显示这一点。