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



我使用此引用来读取我的项目上的文件。 但是我需要存储同样我不知道该怎么做? 请帮助我。

为了读取文件,我从链接中获取了代码

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

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

目前我正在使用以下代码:

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

但它在运行时抛出 FileNotFound 异常

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

FileWriter 将根据需要创建文件。它不必已经存在。

收到此错误的唯一方法是当前工作目录不再存在,或者您没有在该目录中创建文件的权限。

检查您的权限:

Writer output = null;
if (new File("./filename.csv").canWrite()) {
   System.out.println("You have not permissions");
} else {
   output = new BufferedWriter(new FileWriter("./filename.csv"));
   ...
}

好的。使用以下代码获取文件的路径:

String path = System.getProperty("user.dir");
FileWriter fw = new FileWriter(path+File.separator+"filename.csv");

编辑

这是一个演示代码,用于在包myPackage中创建文件"pqr.txt"。鉴于我正在使用命令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();
    }
}

不要调用getResourceAsStream(),而是调用class.getResource()classLoader.getResource()。这些函数返回一个 URL,提供资源的位置。如果资源是文件系统上的纯文件,则 URL 将是file: URL。

获得 URL 后,可以将其转换为URI并将其传递给采用 URI 的File构造函数。然后,您可以使用 File 对象打开该文件。

请注意,getResource()可以返回 File 构造函数无法处理的 URL。例如,如果在 jar 文件中找到资源,则 URL 可能如下所示:

jar:file:/C:/path/to/JDK/lib/vm.jar!/java/lang/Object.class

File构造函数无法处理这样的 URL。这可能是也可能不是您的问题。

相关内容

  • 没有找到相关文章

最新更新