大家好我有这个代码:
for (i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
if(!listOfFiles[i].isHidden()) {
files = listOfFiles[i].getName();
List=List+files+"?:";
}
}
else if(listOfFiles[i].isDirectory()) {
File Test = new File(listOfFiles[i]+"\\");
File [] Rec= Test.listFiles();
if(Rec!=null)
if(!listOfFiles[i].isHidden()) {
files=listOfFiles[i].getName();
List=List+files+"*:";
}
}
}
这个代码在windows中返回真实目录和文件夹中的所有文件&#39;但在Mac和Linux上我只看到文件.. 为什么呢?
答案 0 :(得分:3)
您需要将"\\"
替换为File.separator
。
File Test = new File(listOfFiles[i]+File.separator);
然后,这将以跨平台的方式运行:它将在Windows上使用\
,但在Mac和Linux上使用/
。
需要注意的一点是:File.pathSeparator
还有;
,这对你正在做的事情有一个诱人的名字,但这不是正确的事情。它用于分隔路径列表,在Windows上为:
,在Mac和Linux上为Test
。
顺便说一下,让实例变量以大写字母开头(如上面的{{1}})真的不是一个好主意。类名应该大写,但不应该是方法名或字段名。