为每个平台获得正确的斜杠

时间:2013-11-27 11:39:54

标签: java file path

我有一个JFilechooser来选择存储一些数据的文件名和路径。但我还想在同一路径中存储一个额外的文件,同名但不同的扩展名。所以:

File file = filechooser.getSelectedFile();
String path = file.getParent();
String filename1 = file.getName();

// Check the extension .ext1 has been added, else add it
if(!filename1.endswith(".ext1")){
    filename2 = filename1 + ".ext2";
    filename1 += ".ext1";
}
else{
    filename2 = filename1;
    filename2 = filename2.substring(0, filename2.length-4) + "ext2";
}

// And now, if I want the full path for these files:
System.out.println(path); // E.g. prints "/home/test" withtout the ending slash
System.out.println(path + filename1); // E.g. prints "/home/testfilename1.ext1"

当然我可以在两个字符串的中间添加“/”,但我希望它与平台无关,而在Windows中它应该是“\”(即使是Windows路径文件C:\ users \ test / filename1.ext1可能会起作用。)

我可以想到许多肮脏的方法,这会让我在里面的python开发人员哭泣,但哪一个会是最干净和最奇特的?

3 个答案:

答案 0 :(得分:2)

您可以使用File类中的常量:

File.separator // e.g. / or \
File.pathSeparator // e.g. : or ;

或您可以执行的path + filename1

File file = new File(path, filename1);
System.out.println(file); 

答案 1 :(得分:1)

只需使用File类:

System.out.println(new File(file.getParent(), "filename1"));

答案 2 :(得分:0)

您可以使用:

System.getProperty("file.separator");