在任何计算机中存储文件的相对路径 - Java

时间:2013-01-31 17:26:43

标签: java file

我使用this reference来读取项目中的文件。但我需要同样存储我不知道该怎么做?请帮帮我。

用于读取文件,我已从链接中获取代码

InputStream csv = 
             SomeClassInTheSamePackage.class.getResourceAsStream("filename.csv");

像这样,任何人都可以帮我写文件

目前我正在使用此代码:

 Writer output = null;
 output = new BufferedWriter(new FileWriter("./filename.csv"));

但它在运行时抛出FileNotFound Exception

问题在于定位文件路径。如果我给出绝对路径,它工作正常。但它需要在任何计算机上运行

4 个答案:

答案 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构造函数无法处理此类网址。这可能是也可能不是您的担忧。