How to specify filepath in java?

后端 未结 5 885
礼貌的吻别
礼貌的吻别 2021-01-03 03:38

I have created a java application for \"Debian Linux.\" Now I want that that application reads a file placed in the directory where the jar file of that application is speci

相关标签:
5条回答
  • 2021-01-03 04:02

    Are you asking about escape character issues?

    If that is the case then use forward slashes instead of backward slashes like

    "C:/Users/You/Desktop/test.txt"

    instead of

    "C:\Users\You\Desktop\test.txt"

    0 讨论(0)
  • 2021-01-03 04:09

    You could ask your classloader to give you the location of the jar:

    getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
    

    ...but I'd suggest to put the file you are looking for inside your jar file and read it as a resource (getClass().getResourceAsStream( "myFile.txt" )).

    0 讨论(0)
  • 2021-01-03 04:13

    Using relative paths in java.io.File is fully dependent on the current working directory. This differs with the way you execute the JAR. If you're for example in /foo and you execute the JAR by java -jar /bar/jar/Bar.jar then the working directory is still /foo. But if you cd to /bar/jar and execute java -jar Bar.jar then the working directory is /bar/jar.

    If you want the root path where the JAR is located, one of the ways would be:

    File root = new File(Thread.currentThread().getContextClassLoader().getResource("").toURI());
    

    This returns the root path of the JAR file (i.o.w. the classpath root). If you place your resource relative to the classpath root, you can access it as follows:

    File resource = new File(root, "filename.ext");
    

    Alternatively you can also just use:

    File resource = new File(Thread.currentThread().getContextClassLoader().getResource("filename.ext").toURI());
    
    0 讨论(0)
  • 2021-01-03 04:16

    I think this should do the trick:

    File starting = new File(System.getProperty("user.dir"));
    File fileToBeRead = new File(starting,"my_file.txt");
    

    This way, the file will be searched in the user.dir property, which will be your app's working directory.

    0 讨论(0)
  • 2021-01-03 04:19

    If you know the name of the file, of course it's simply

    new File("./myFileName")
    

    If you don't know the name, you can use the File object's list() method to get a list of files in the current directory, and then pick the one you want.

    0 讨论(0)
提交回复
热议问题