我正在使用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.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){}
}
Java并没有提供一种方法或策略来将文件路径转换为Strings格式,以适应不同操作系统的需要。你需要自己写一个方法来实现这个功能,或者利用一个已经为你解决了这个问题的库。
例如,你可以使用 Apache Commons IO 来解决这个问题,使用该方法。FilenameUtils.separatorsToSystem(String path)