我正在使用Java开发一个与文件关联的程序,因此我使用File.separator
来管理它。
奇怪的事实是,无论我在哪里调用它,它都会返回\
,因为我在Windows上工作,除了我使用它的最后一个函数。在那里,它返回;
。我会给你一段我的代码,虽然我相信它不会有多大帮助。还有什么我应该知道解决这个问题吗?
System.out.println("File:" +source+"\n");
String filename= f.getName().substring(f.getName().lastIndexOf(File.pathSeparator)+1,f.getName().length());//here at printing I get /
System.out.println("Filename:" +filename+"\n");
InputStream is = null;
OutputStream os = null;
try {
is = new FileInputStream(source);
os = new FileOutputStream(output+ File.pathSeparator + filename);//here I get ;
byte[] buffer = new byte[1024];
int length;
while ((length = is.read(buffer)) > 0) {
os.write(buffer, 0, length);
}
} finally {
is.close();
os.close();
}
答案 0 :(得分:8)
不,File.pathSeparator
在Windows上 ;
。例如,您可能有:
PATH=c:\Utils;c:\SomethingElse
Windows上的{p> File.pathSeparator
为;
,Unix上为:
。
您正在考虑File.separator
在Windows上为\
,在Unix上为/
。
以下是一种简单的方法:
import java.io.File;
public class Test {
public static void main(String[] args) throws Exception {
System.out.println("File.separator is " + File.separator);
System.out.println("File.pathSeparator is " + File.pathSeparator);
}
}
(在您的第一句话中,您甚至可以谈论File.separator
- 然后您在代码中使用File.pathSeparator
。)
请注意,如果您使用File
类中的方法,通常根本不需要指定分隔符 - 很难确切地说明您要实现的目标,但我怀疑类似:
File file = new File(f.getName());
File outputFile = new File(output, file.getName());
// Now use outputFile
......会更好,更清洁。