在 java 中的目录路径中添加单个正斜杠或双反斜杠

Adding a single forward slash or double backward slash to directory path in java

我正在使用 JFileChooser 获取我的项目中的目录路径。它工作得很好,但有一个小问题。假设这是目录结构:

->Home
  ->Documents
    ->Java

这是代码:

JFileChooser fileChooser=new JFileChooser();
        fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        int userSelection=fileChooser.showSaveDialog(this);
        if(userSelection==JFileChooser.APPROVE_OPTION){
            try{File fileTosave=fileChooser.getSelectedFile();
                File newFile=new File(fileTosave.getAbsolutePath()+"satish.txt");
                System.out.println(newFile);
                this.dispose();}
            catch(Exception e){}
        }

如果我目前在 java 文件夹中,它会在 windows 中为我提供路径 Home/Documents/Java(或主页:\Documents\Java)。我想要的是它应该 return 包含单正斜杠或双正斜杠(根据平台)的路径,使其看起来像 Home/Documents/Java/。我想这样做是因为稍后我必须将文件名附加到此路径,以便文件路径变为 Home/Documents/java/file.txt.

关于如何做到这一点有什么想法吗?

我不想手动添加斜杠,因为那样我还必须牢记平台。

谢谢!

Java 不提供将文件路径作为字符串转换为开箱即用的不同 OS 格式的方法或策略。您需要编写自己的方法来执行此操作,或者利用已经为您解决此问题的库。

比如可以用Apache Commons IO来解决,使用方法:

FilenameUtils.separatorsToSystem(String path)

使用java.io.File.pathSeparator

/**
     * The system-dependent path-separator character, represented as a string
     * for convenience.  This string contains a single character, namely
     * <code>{@link #pathSeparatorChar}</code>.
     */
    public static final String pathSeparator = "" + pathSeparatorChar;

您的代码应该如下所示

JFileChooser fileChooser=new JFileChooser();
        fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        int userSelection=fileChooser.showSaveDialog(this);
        if(userSelection==JFileChooser.APPROVE_OPTION){
            try{File fileTosave=fileChooser.getSelectedFile();
                File newFile=new File(fileTosave.getParent() + File.separator +"satish.txt");
                System.out.println(newFile);
                this.dispose();}
            catch(Exception e){}
        }