gpt4 book ai didi

java - 使用 jar 文件读取/写入外部 .txt 文件

转载 作者:行者123 更新时间:2023-11-30 06:55:50 48 4
gpt4 key购买 nike

我是新手,这是我的第一篇文章。我在 eclipse 上制作了一个游戏应用程序,运行完美。它使用一些 .txt 文件来存储分数和玩家选项。

问题是当我尝试将其导出为可运行的 jar 文件时,这就是问题所在,它会生成一个 jar 文件,并使我无法在我拥有的任何 .txt 文件上写入。我知道这一点,因为我尝试过,不是数百个,但已经接近解决方案,其中一些允许我读取文件,但我仍然无法在它们上写入。我意识到这是 jar 文件的正常功能,所以我的问题是:

如何在包含所有 txt 文件的同一目录中为 jar 文件创建一个外部文件夹?这样它就可以在这些文件中读取和写入,并且我应该在现有代码中使用什么方法?

我只显示我如何读/写其中一个文件,但对于其他每个文件都是相同的,并且我还显示了对其他过去解决方案的一些评论:

    private final String cubesScore =  "resF\\score.txt";
//private final String cubesScore = "/score.txt";
//private final String cubesScore = "//resF//score.txt";

try{
/*
try{
File file = new File(cubesScore);
//FileReader reader = new FileReader(new File(new File("."), "score.txt"));

if(file.createNewFile()){
System.out.println("File created successfully!");
} else{
System.out.println("File already exists.");
}

} catch(IOException e){
System.out.println("An error occurred on score.txt!!");
}
*/
Scanner scanner = new Scanner(new File(cubesScore));

//InputStream source = this.getClass().getResourceAsStream(cubesScore);
//Scanner scanner = new Scanner(source);

/*
InputStream inputStream = this.getClass().getResourceAsStream(cubesScore);
InputStreamReader inputReader = new InputStreamReader(inputStream);
BufferedReader reader = new BufferedReader(inputReader);
*/
int value;
int i = 0;
while(scanner.hasNext()){
value = scanner.nextInt();
if(value >= 0){
mostCubesDestroyed[i] = value;
System.out.println(value);
}
else
System.out.println("File corrupted");
++i;
}
scanner.close();
} catch (NullPointerException | FileNotFoundException e) {
System.out.println("File Not Found/Null");
}

写:

        try {
PrintWriter out = new PrintWriter(cubesScore);
//OutputStream out = this.getClass().getResourceAsStream(cubesScore);
//out = new PrintWriter(out);
//BufferedWriter out = new BufferedWriter(new FileWriter(cubesScore));
//out.write(mostCubesDestroyed[0]);
//out.newLine();
out.println(mostCubesDestroyed[0]);
System.out.println(mostCubesDestroyed[0]+" Cubes GameMode 0");
//out.write(mostCubesDestroyed[1]);
//out.newLine();
out.println(mostCubesDestroyed[1]);
System.out.println(mostCubesDestroyed[1]+" Cubes GameMode 1");
//out.write(mostCubesDestroyed[2]);
//out.newLine();
out.println(mostCubesDestroyed[2]);
System.out.println(mostCubesDestroyed[2]+" Cubes GameMode 2");
//out.write(mostCubesDestroyed[3]);
//out.newLine();
out.println(mostCubesDestroyed[3]);
System.out.println(mostCubesDestroyed[3]+" Total Cubes Destroyed");
out.close();
} catch (IOException e) {
System.out.println("Error, try again!!");
}

我意识到保留注释代码会使阅读变得稍微困难​​,但我仍然想向您展示一些我尝试过的东西......

我还尝试在应用程序第一次运行时创建该文件,但没有成功:

      try{
File file = new File(cubesScore);
//FileReader reader = new FileReader(new File(new File("."), "score.txt"));

if(file.createNewFile()){
System.out.println("File created successfully!");
} else{
System.out.println("File already exists.");
}

} catch(IOException e){
System.out.println("An error occurred on score.txt!!");
}

这就是我的问题,如果有人以前来过这里并以某种方式设法找到解决方案,或者您只是知道如何产生所需的结果,即读取/写入 jar 外部的 .txt 文件(因为内部导致对于各种问题)然后请告诉我应该做什么,我看了一百多个帖子和视频,但仍然找不到所需的解决方案。

编辑:这个问题已在下面解决,事实证明我需要一个 .在“/score.txt”上还有一个 .在所有文件中。

最佳答案

你尝试过这个吗?:私有(private)最终字符串 CUBES_SCORE = "./score.txt";如果您希望将其放在子目录中,则还必须创建该子目录。另外,看看这个:How do I create a file and write to it in Java?

关于java - 使用 jar 文件读取/写入外部 .txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41838049/

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