private void traverse(String dir, int ctr) throws IOException
{
// get current file and name
File myFile = new File(dir);
System.out.println("dir path: " + myFile.getAbsolutePath()); // correct path
System.out.println("exists? : " + myFile.exists()); // returns false
String name = myFile.getName();
System.out.println(dir + " is dir? " + myFile.isDirectory());
if (name.equals("tree.txt"))
return;
// print tabs and name
for (int i = 0; i < ctr; ++i)
bw2.write("\t");
bw2.write(name);
bw2.newLine();
if (myFile.isFile() && name.charAt(0) != '.')
{
File f = new File(dir + "." + name);
int version = 1; // if doesn't exist then version is 1
if (f.exists())
{
FileInputStream fis = new FileInputStream(f);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
version = Integer.parseInt(br.readLine()); // get version
br.close();
}
fos1 = new FileOutputStream(f);
osw1 = new OutputStreamWriter(fos1);
bw1 = new BufferedWriter(osw1);
bw1.write(version); // write version
bw1.close();
}
else if (myFile.isDirectory())
{
String dirContents[] = myFile.list();
for (String content : dirContents)
{
traverse(dir + content + '/', ctr + 1);
}
}
} // end traverse
输出:
kedy@Laptop:~/Desktop/connection$ java Server
dir path: /home/kedy/Desktop/connection/test.txt
exists? : false
test.txt/ is dir? false
dir path: /home/kedy/Desktop/connection/tree.txt
exists? : false
tree.txt/ is dir? false
dir path: /home/kedy/Desktop/connection/folder 2
exists? : false
folder 2/ is dir? false
dir path: /home/kedy/Desktop/connection/test2.txt
exists? : false
test2.txt/ is dir? false
dir path: /home/kedy/Desktop/connection/folder
exists? : false
folder/ is dir? false
答案 0 :(得分:2)
观察输出,我猜想确实没有文件"test.txt/"
。但是,可能存在文件"text.txt"
。
答案 1 :(得分:2)
更改
traverse(dir + content + '/', ctr + 1);
到
traverse(dir + '/' + content, ctr + 1);
答案 2 :(得分:0)
我可能最终会添加这个答案,但是,首先,您可能需要检查权限,以查看该应用程序是否具有读取权限。
哪个版本的Java,哪个OS?
如果将文件移动到所有用户共有的公共目录,是否可以找到该文件?
您可能希望将路径作为参数,因此您可以轻松地更改它,而无需重新编译应用程序,并对其进行测试。