【问题标题】:I keep getting an error at line 91 that I can't debug...'nodesBWriter.write()'我在第 91 行不断收到一个错误,我无法调试...'nodesBWriter.write()'
【发布时间】:2013-10-08 16:52:13
【问题描述】:

我无法调试这个小应用程序。代码应该是

  • 读取 .csv
  • 从第三类(标签)中选择数据
  • 创建文件以收集照片及其标签之间的节点和链接
  • 将这些标签写入一个准备在 Gephi 中使用的文件

我在第 91 行不断收到错误消息,目前,notes.txt 只显示:

ID、标签、编号 标签,标签,

不是实际的标签。我认为循环中有问题,但我不知道如何纠正这个问题。我也考虑过用这个链接中演示的方法重写 BufferedWriter + Writer 代码:

http://tutorials.jenkov.com/java-io/bufferedwriter.html

但我不确定这是否是这里的问题。如果您对如何(在哪里)寻找解决方案有任何指示,请告诉我。

 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Lecture4;

import Lecture3.*;
import com.csvreader.CsvReader;
import com.google.common.collect.HashMultiset;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;

/**
 *
 * @author doyinue
 */
public class ReadingACSVFile1 {

    private static String tagsOfTheCurrentPicture;
    private static String oneLine;
    private static String[] myTagsAsAnArray;
    private static char[] firstTag;

    /**
     * @param args the command line argumentsileReader myFileReader = new
     * FileReader(myfile);
     *
     *
     *
     *
     *
     * }
     * }
     *
     */
    @SuppressWarnings("empty-statement")
    public static void main(String[] args) throws FileNotFoundException, IOException {
        // TODO code application logic here

        String myfile;
        myfile = "D:\\Learning\\EUR - Handling Digital Data\\Resources\\rotterdam_erasmus.csv";

        FileReader myFileReader = new FileReader(myfile);
        BufferedReader myBufferedReader = new BufferedReader(myFileReader);

        //this if for converting the comma into a character this can understand
        String comma = ",";
        char fieldCharacter = comma.charAt(0);

        //csvReader
        CsvReader myReader;
        myReader = new CsvReader(myBufferedReader, fieldCharacter);

        //this if for converting the text into a character this can understand
        String text = "\"";
        char textCharacter = text.charAt(0);

        myReader.setTextQualifier(textCharacter);
        myReader.setUseTextQualifier(true);

        FileWriter nodesWriter = new FileWriter("D:\\Learning\\EUR - Handling Digital Data\\Output\\Lecture4\\nodes.txt");
        BufferedWriter nodesBWriter = new BufferedWriter(nodesWriter);

       // FileWriter connWriter = new FileWriter("D:\\Learning\\EUR - Handling Digital Data\\Output\\Lecture4\\conns.txt");
       // BufferedWriter connBWriter = new BufferedWriter(connWriter);

        //Multiset Tags
        HashMultiset<String> myTags = HashMultiset.create();

        //Multiset Links
        HashMultiset<String> myConnections = HashMultiset.create();




        //start the loop
        while (myReader.readRecord()) {

            String[] values = myReader.getValues();
            String tagsOfImage = values[2];
            String[] myTagsArrayed;
            myTagsArrayed = tagsOfImage.split(",");
            myTags.addAll(Arrays.asList(myTagsArrayed));


            nodesBWriter.write("Id,Label,Number");
            nodesBWriter.newLine();

            for (String tags: myTags.elementSet()){

                nodesBWriter.write(tags);
                nodesBWriter.write(",");
                nodesBWriter.write(tags);
                nodesBWriter.write(",");
                nodesBWriter.write(myTags.count(tags));
                nodesBWriter.newLine();


            }


            nodesBWriter.close();

            Utils usefulTools = new Utils();
            myConnections.addAll(usefulTools.getListOfLinks(myTagsArrayed));



        }


        myBufferedReader.close();


    }
}

【问题讨论】:

  • 第 91 行在哪里,出现什么错误?
  • 第 91 行在“//开始循环”之后,这是行:nodesBWriter.write("Id,Label,Number");这是错误:run-single:线程“main”中的异常 java.io.IOException:流在 java.io.BufferedWriter.ensureOpen(BufferedWriter.java:116) 处关闭 java.io.BufferedWriter.write(BufferedWriter.java :221) 在 java.io.Writer.write(Writer.java:157) 在 Lecture4.ReadingACSVFile1.main(ReadingACSVFile1.java:91) Java 结果:1 BUILD SUCCESSFUL(总时间:0 秒)

标签: csv bufferedreader bufferedwriter


【解决方案1】:

错误是您在循环中关闭了nodesBWriter。因此,在循环的第二次迭代中,写入失败。只需在循环结束后移动 nodesBWriter.close();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 2023-03-22
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多