在java中的目录路径中添加一个单斜线或双斜线[重复]。

问题描述 投票:0回答:2

我正在使用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文件夹里,它给我的路径是: Home/Documents/Java(或Home:\Documents/Java)。我想要的是,它应该返回包含单斜线或双斜线的路径(根据plaform),这样的路径看起来就像 Home/Documents/Java/. 我想这样做是因为以后我必须在这个路径上添加一个文件名,这样文件路径就变成了 Home/Documents/java/file.txt.

有什么好办法吗?

我不想手动添加斜杠,因为那样我也要记住平台。

谢谢你!我正在使用JFileChooser来获取一个项目中的目录路径。

java filepath jfilechooser
2个回答
2
投票

使用 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){}
        }

0
投票

Java并没有提供一种方法或策略来将文件路径转换为Strings格式,以适应不同操作系统的需要。你需要自己写一个方法来实现这个功能,或者利用一个已经为你解决了这个问题的库。

例如,你可以使用 Apache Commons IO 来解决这个问题,使用该方法。
FilenameUtils.separatorsToSystem(String path)
© www.soinside.com 2019 - 2024. All rights reserved.