gpt4 book ai didi

java - 直接文件路径不起作用

转载 作者:行者123 更新时间:2023-12-02 06:49:58 25 4
gpt4 key购买 nike

我有一个 sqlite 数据库文件,我正在使用 swing 应用程序访问该文件。 jdbc 驱动程序和一切都可以工作。如果我获得确切的文件位置并将其粘贴到数据库 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 cwd = System.getProperty("user.dir").replaceAll("\\\\", "/");

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

有关后两条语句中正则表达式用法的说明,请参阅 here .

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

关于java - 直接文件路径不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18166494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com