繁体   English   中英

直接文件路径不起作用

[英]direct file path not working

我有一个sqlite数据库文件,我正在使用swing应用程序访问。 jdbc驱动程序和everyhting工作。 如果我得到确切的文件位置并将其粘贴到数据库URL中它将起作用。 我尝试使用相对文件路径,但它不起作用。 我创建了一个方法来获取程序工作目录的直接文件路径,并且如果你想了解文件夹及其内容,则会创建一个地图。 它应该工作,但不,我想知道是否有人可以告诉我为什么。 这是方法

    public String GetAbsPath(){
     File workingDir=new File(".");
  String absolute=workingDir.getAbsolutePath();
 char[] absA=absolute.toCharArray();

  ArrayList<String> list=new ArrayList<>();
        for (int x = 0; x < absA.length; x++) {
            String listPiece = Character.toString(absA[x]);
             list.add(listPiece);
        }
     StringBuilder result = new StringBuilder();
        for (int i = 0; i < list.size()-1; i++) {
            if(list.get(i).equals("\\")){
                list.set(i, "\\\\");
            }
            result.append(list.get(i));
        }
        String path=result.toString();

    return path;
}

它返回我手动输入的确切文件路径,但找不到该文件。 这两种方法都适用于netbeans,但只有当我尝试在netbeans之外运行文件时才输入到字符串中的确切文件路径。 这是调用方法的地方。

 GetPath dir=new GetPath();
        String dirFilePath = "jdbc:sqlite:"+dir.GetAbsPath()+"Office.sqlite";
        database=dirFilePath;

这有效......

       CodeSource codeSource = MainFrame.class.getProtectionDomain().getCodeSource();
            File jarFile=null;
            String jarDir=null;
            try {
                jarFile = new File(codeSource.getLocation().toURI().getPath());
                jarDir = jarFile.getParentFile().getPath();
            } catch (URISyntaxException ex) {
                Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
            }

      database ="jdbc:sqlite:"+jarDir +"\\Office.sqlite";

要获取当前工作目录的绝对路径,请使用:

 System.getProperty("user.dir")

返回一个String

编辑:
如果要将"\\"替换为"/" ,请使用以下命令:

String cwd = System.getProperty("user.dir").replaceAll("\\\\", "/");

要么

String cwd = System.getProperty("user.dir").replaceAll(Pattern.quote("\\"), "/");

有关后两种语句中正则表达式用法的解释,请参见此处

编辑2(根据评论):
由于通过.equals()比较两个字符串返回true ,我唯一能想到的是这是一个奇怪的NetBeans问题。 我建议尝试一个不同的IDE,也许是Eclipse

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM