因此,我正在制作一个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(“ /”,“ \”);
修复了崩溃...

10-01 09:53