java语言。它说我的文件不存在,但它确实存在

时间:2009-09-20 05:40:59

标签: java file

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

3 个答案:

答案 0 :(得分:2)

观察输出,我猜想确实没有文件"test.txt/"。但是,可能存在文件"text.txt"

答案 1 :(得分:2)

更改

traverse(dir + content + '/', ctr + 1);

traverse(dir + '/' + content, ctr + 1);

答案 2 :(得分:0)

我可能最终会添加这个答案,但是,首先,您可能需要检查权限,以查看该应用程序是否具有读取权限。

哪个版本的Java,哪个OS?

如果将文件移动到所有用户共有的公共目录,是否可以找到该文件?

您可能希望将路径作为参数,因此您可以轻松地更改它,而无需重新编译应用程序,并对其进行测试。

相关问题