查找文件的路径

时间:2013-04-08 12:17:39

标签: java file path space

好吧所以我正在制作一个程序,其中用户键入jar文件中包含的文件名,因此程序从jar中提取该文件然后打开它。我没有任何问题,这样做,只有我不明白的一些奇怪的东西是我正在使用的代码:

String path=getpath(getClass().getProtectionDomain().getCodeSource().getLocation().getPath());
public void open(String filename) throws FileNotFoundException, IOException{
    InputStream is = getClass().getResourceAsStream("pdfs/"+filename);
    OutputStream os = new FileOutputStream(path+"SultanKadab.pdf");
    byte[] buffer = new byte[4096];
    int length;
    while ((length = is.read(buffer)) > 0)
        os.write(buffer, 0, length);
    os.close();
    is.close();
if (pdfFile.exists()&&Desktop.isDesktopSupported())
         Desktop.getDesktop().open(pdfFile); //opening file
}

public String getpath(String f){
    String s = "";
    int lastInd=0;
    for(int i=0;i<f.length();i++){
        if(f.charAt(i)=='/'){s+="\\";lastInd=s.length()-1;}
        else if(f.charAt(i)=='%'&&f.length()-i>=2){
            if(f.charAt(i+1)=='2'&&f.charAt(i+2)=='0')i+=2;s+=" ";
        }
        else s+=f.charAt(i);
    }
    f=s.substring(0,lastInd+1);
    return f;
}

我的问题是关于getpath方法,我认为没必要,我认为java有一个内置方法来做那个 。的getClass()getProtectionDomain()getCodeSource()的getLocation()的getPath())= “/ C:/试验%20test /”。 它被转换为“\ C:\ test test \”,所以我可以将它传递给fileOutputStream构造函数 基本上,getpath方法将'\'更改为'/',将%20更改为''

1 个答案:

答案 0 :(得分:1)

请参阅:Get current working directory in Java

不需要getPath方法,因为Java提供了处理路径的方法。