Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 写入文件的路径(包含该文件的文件夹的路径)_Java_File_List - Fatal编程技术网

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

Java 写入文件的路径(包含该文件的文件夹的路径),java,file,list,Java,File,List,我是Java新手,一直在尝试实现一个创建目录及其相应文件的函数。其中一个文件是“mapping.txt”,它位于名为NodeA的文件夹中。mapping.txt的内容是NodeA的绝对路径 请找到下面的代码,我已经试过了。为了更好地理解,我已经在所有可能的地方发表了评论。我想知道为什么我不能在文件中写入。任何帮助都将不胜感激 //-------------------------- To create Node and their respective Files -----------

我是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());
         }
下一个文件一次创建所有文件。我需要知道如何在创建每个文件后检查,以便编辑该文件


多谢各位

首先,将
iter.next()
赋值给一个局部变量:

if(iter.next().equals("mapping")
String fileName= iter.next();
因为下次调用它时,迭代器跳转到下一个值,您可能会得到
NoSuchElementException
,并且肯定会得到错误的结果。然后,在代码的其余部分使用此
fileName
变量

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

if (fileName.equals("mapping"))

结果和你期望的有什么不同?我尝试了上面的方法,但仍然没有写出来。文件是空的。我试图更改项目,并尝试了相同的结果。提示:添加@AdrianJandl(或任何人,
@
很重要),以确保他们收到新评论的通知。@AdrianJandl当然。我会的follow@AdrianJandl我调试代码。当我比较时,{iter.next()==“mapping”}我试图打印iter.next()的内容,结果发现它是字符串的完整数组,即“mapping”和“data”。但我想先遍历并检查“映射”,然后检查“数据”。现在,我不知道如何继续,我试图与equals()进行比较,但它不起作用。通过创建文件和目录,除了输入数据之外,一切看起来都很好。调试它,查看两个字符串是否完全相同。在这种情况下,对等必须起作用。希望您使用的是IDE(例如Eclipse)是的。我正在使用Netbeans IDE。我调试了它。当我比较时,{iter.next()==“mapping”}我试图打印iter.next()的内容,结果发现它是字符串的完整数组,即“mapping”和“data”。但我想先遍历并检查“映射”,然后检查“数据”。现在,我不知道如何继续。请使用
fileName.equals(“映射”)
而不是
=
<代码>文件名必须初始化为
字符串文件名=iter.next()
作为
循环的第一行
if (fileName.equals("mapping"))