打开文件时找不到文件相对路径

时间:2018-08-28 08:29:22

标签: java file filepath

Iam将文件添加到我的Eclipse项目中

当我的程序正在运行以读取它时,我需要打开它 主要问题当iam尝试打印文件的路径时
它打印出该文件位于bin文件夹中,但无法打开它,这给了我 找不到文件(系统找不到指定的路径)

这是我的代码

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;

public class po {

public static void main(String[] args)   throws FileNotFoundException  {





    URL path=po.class.getClassLoader().getResource("abcd.txt");

    String path_s=path.toString();
    System.out.println(path.getPath().toString());
    String p=path.getPath().toString();
    System.out.println(p);
    String pp="ar\rrrr";
    p=p.replaceAll(pp.substring(2,3),"/");
    System.out.println(p);

    File file = new File(p);

      BufferedReader br = new BufferedReader(new FileReader(file));

      String st;
      try {
        while ((st = br.readLine()) != null)
            System.out.println(st);
    } catch (IOException e) {

        e.printStackTrace();
    }






}

}

对于那些将被标记为重复的人,我已经提到了此解决方案,但没有成功
Solution Of StackOverflow

如果文件是这样

enter link description here

它给了我空指针异常 在Line上,当我尝试将路径转换为字符串

URL path=po.class.getClassLoader().getResource("abcd.txt");

    String a=path.toString();

2 个答案:

答案 0 :(得分:0)

这是一个完整的工作示例:

import java.io.*;
import java.net.*;

public class Test {
    public static void main(String[] args) {
        URL url=Test.class.getClassLoader().getResource("Files_1/abcd.txt");

        try {
            File file = new File(url.toURI());
            try (BufferedReader br = new BufferedReader(new FileReader(file))) {
                String st;
                while ((st = br.readLine()) != null)
                    System.out.println(st);
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

确保Files_1/abcd.txt相对于调用getResource()的类。

在我的示例中,我具有这样的目录结构:

Desktop
+-- test
    +-- Test.java
    +-- Test.class
    +-- Files_1
        +-- abcd.txt

这两个命令都可以使用:

~/Desktop/test $ java Test

~/Desktop $ java -cp test Test

答案 1 :(得分:0)

如果您使用的是代码:
URL path=po.class.getClassLoader().getResource("abcd.txt"); 这意味着您正在使用类资源位置(构建后)
在这种情况下,由于将文件移动到了其他位置,因此可以更改变量的值。

//String path_s=path.toString();
 String path_s="Files/abcd.txt"; //relative path to proj.