因此,我正在制作一个Java应用程序/程序,该程序可以备份特定的文件夹(文件夹的名称确实很长,但以“Pokémon”开头),我的问题是此文件夹包含一个重音符号(此é)。我有一台Mac,当我运行该程序时,它运行良好,但是每当我在Windows上尝试该程序时,我的程序都会搜索一个文件夹,而不是“é”,而是显示“ e?”。 (在控制台中,当我打印路径的字符串时,会收到此Poke?mon)。 Windows格式是否有问题?我该如何解决?
void SaveNow (String folderName) {
String fullOriginalPath = getMCPath() + "saves/Pokémon Cobalt and Amethyst [DEMO]";
String fullNewPath = getMCPath() + "PokeCA/" + folderName;
System.out.println("Path to original PokeCA map: " + fullOriginalPath); //At this point, the é is replaced by e?
System.out.println("Path to backup PokeCA map: " + fullNewPath);
if (OsUtils.isWindows()) {
fullOriginalPath = MakeWinPath(fullOriginalPath); //Replaces all / by \ because Windows
fullNewPath = MakeWinPath(fullNewPath); //Same
}
File source = new File(fullOriginalPath);
File dest = new File(fullNewPath);
try {
FileUtils.copyDirectory(source, dest);
System.out.println("Successfully backuped map!");
JOptionPane.showMessageDialog(frmSave, "Successfully backuped map!");
} catch (IOException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(frmSave, "Error, could not backup map... ;(");
}
注意:另外,我希望它适用于所有操作系统,这就是为什么我使用OsUtils.isWindows()修改路径的原因。
谢谢!
最佳答案
我能够解决问题!感谢所有帮助我的人!
首先,由于编码问题,我不得不将“ saves /PokémonCobalt and Amethyst [DEMO]”替换为“ saves / Pok” +'\ u00e9'+ mon Cobalt and Amethyst [DEMO]“。
其次,在我将所有“ /”更改为“ \”的函数中,我正在使用
返回input.replaceAll(“ /”,“ \”);
更改为
返回input.replace(“ /”,“ \”);
修复了崩溃...