我使用this reference来读取项目中的文件。但我需要同样存储我不知道该怎么做?请帮帮我。
用于读取文件,我已从链接中获取代码
InputStream csv =
SomeClassInTheSamePackage.class.getResourceAsStream("filename.csv");
像这样,任何人都可以帮我写文件
目前我正在使用此代码:
Writer output = null;
output = new BufferedWriter(new FileWriter("./filename.csv"));
但它在运行时抛出FileNotFound Exception
问题在于定位文件路径。如果我给出绝对路径,它工作正常。但它需要在任何计算机上运行
答案 0 :(得分:0)
FileWriter将根据需要创建文件。它不一定存在。
唯一可以解决此错误的方法是当前工作目录不再存在,或者您无权在目录中创建文件。
答案 1 :(得分:0)
检查您的权限:
Writer output = null;
if (new File("./filename.csv").canWrite()) {
System.out.println("You have not permissions");
} else {
output = new BufferedWriter(new FileWriter("./filename.csv"));
...
}
答案 2 :(得分:0)
OK ..使用以下代码获取文件路径:
String path = System.getProperty("user.dir");
FileWriter fw = new FileWriter(path+File.separator+"filename.csv");
修改强>
这是一个在包"pqr.txt"
中创建文件myPackage
的演示代码。鉴于我正在使用命令java myPackage.AccessCheck
执行类文件,即从mypackage上方的一个目录执行。
package myPackage;
import java.io.FileWriter;
import java.io.File;
public class AccessCheck
{
protected void callme()
{
try
{
String name = System.getProperty("user.dir")+File.separator+AccessCheck.class.getPackage().getName()+File.separator+"pqr.txt";
System.out.println(name);
FileWriter fw = new FileWriter(name);
}catch(Exception ex){ex.printStackTrace();}
}
public static void main(String st[])
{
AccessCheck asc = new AccessCheck();
asc.callme();
}
}
答案 3 :(得分:0)
不要拨打getResourceAsStream()
,而是拨打class.getResource()
或classLoader.getResource()
。这些函数返回一个URL,给出资源的位置。如果资源是文件系统上的普通文件,则URL将是file:
URL。
获得网址后,您可以将其转换为URI
并将其传递给带有URI的File
构造函数。然后,您可以使用File
对象打开文件。
请注意,getResource()
可以返回File
构造函数无法处理的网址。例如,如果在jar文件中找到资源,则URL可能如下所示:
jar:file:/C:/path/to/JDK/lib/vm.jar!/java/lang/Object.class
File
构造函数无法处理此类网址。这可能是也可能不是您的担忧。