写入文件的路径(包含文件的文件夹的路径)

时间:2013-06-13 13:16:45

标签: java file list

我是Java的新手,并且一直在尝试实现创建目录及其各自文件的功能。其中一个文件是“mapping.txt”,它位于名为NodeA的文件夹中。 mapping.txt的内容是NodeA的绝对路径。

请查看下面的代码,我试过了。我已在所有可能的地方发表评论,以便更好地理解。我想知道为什么我无法在文件中写入。任何帮助将深表感谢。

//--------------------------   To create Node and their respective Files   ------------------------------------------------------
        for(int j=0;j<alpha.length;j++){                    //alpha is a String array which contains {"A","B","C","D"}
            node_directory=Node.concat(alpha[j]);           // nodde_directory is "C:\Users\Desktop\Node. I concat A,B,C and D to create different directories.
            File dir = new File(node_directory);
        if(!dir.exists()){
            dir.mkdirs();
       }
        System.out.println("Path: \n" +dir.getAbsolutePath());
        System.out.println();

        List<String> fileList = Arrays.asList(files);       // files is an array of string containing "mapping" and "data".
        Iterator <String> iter = fileList.iterator();       //I traverse through the list.
        while(iter.hasNext()){
            File next_file = new File(node_directory+"\\"+iter.next()+".txt");  //while traversing, I append the current "iter.next" to "node_directory" and append ".txt" to create files.
            System.out.println("The Files are: \n" +next_file);
            System.out.println();

            // I created the Directories, mapping and data Files for each directory. 

            /*I am stuck here, as it is not writing the path in the mapping File */

            if(iter.next()=="mapping"){         // I check if iter.next is mapping, so that i can write in the mapping file, the path of Folder containing mapping file. 
                BufferedWriter br = new BufferedWriter(new FileWriter(next_file));
                br.write(next_file.getAbsolutePath());
            }


    if(!next_file.exists()){
                System.out.println(next_file.createNewFile());
         }

我意识到发生了什么。因为我通过列表遍历String of Array。问题出现在这里:

next_file = new File(node_directory+"\\"+iter.next()+".txt"); // This line creates files by appending the required data. Since iter.next() returns all the Files in one go, 

BufferedWriter br = new BufferedWriter(new FileWriter(next_file));
                br.write(dir.getAbsolutePath());

next_file一次创建所有文件。我需要知道如何在创建后检查每个文件,以便我可以编辑该文件。

谢谢。

2 个答案:

答案 0 :(得分:0)

if(iter.next().equals("mapping")

答案 1 :(得分:0)

首先,将iter.next()分配给局部变量:

String fileName= iter.next();

因为下次调用它时,迭代器会跳转到下一个值,您可能会得到NoSuchElementException并确定错误的结果。然后,在其余代码中使用此fileName变量。

另一个错误是将String与==进行比较。 String是一个不可变对象,使用==只是比较对象引用,而不是对象。因此,与==比较时,两个完全相同的字符串可能会产生错误。 .equalsTo()代替:

if (fileName.equals("mapping"))