【问题标题】:Adding a single forward slash or double backward slash to directory path in java [duplicate]在java中的目录路径中添加单个正斜杠或双反斜杠[重复]
【发布时间】:2020-08-17 03:25:13
【问题描述】:

我正在使用 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(或 Home:\Documents\Java)。我想要的是它应该返回包含单正斜杠或双正斜杠(根据平台)的路径,使其看起来像Home/Documents/Java/。我想这样做是因为稍后我必须在此路径中附加一个文件名,以便文件路径变为Home/Documents/java/file.txt

关于如何做到这一点的任何想法?

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

谢谢!

【问题讨论】:

标签: java swing filepath jfilechooser


【解决方案1】:

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

【讨论】:

  • 它在 Windows 和 Unix 上都能正常工作吗?
  • 让我知道它是否有效
  • 我无法访问 Windows,但它确实可以在 Ubuntu 上运行
  • File newFile = new File(fileToSave, "satish.txt"); 将为任何平台生成正确的文件路径/名称。
【解决方案2】:

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

例如,您可以使用Apache Commons IO 来解决这个问题,使用方法:
FilenameUtils.separatorsToSystem(String path)

【讨论】:

    猜你喜欢
    • 2013-07-23
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 2020-02-01
    • 1970-01-01
    • 2018-10-16
    相关资源
    最近更新 更多