writeFile()方法不会将所有行写入文本文件[JAVA]

时间:2014-12-11 01:33:18

标签: java arraylist writefile

我正在尝试将arraylist的内容写入文本文件。我部分能够使用我的新手编码技能来做到这一点,但是目前它只将48行中的第一行写入文本文件。

我认为这可能是因为我的代码中没有任何循环但是,我不完全确定id是否需要while循环,或者循环以及我需要放置的位置它?这可能也是由于readFile方法使用String(readAllBytes(get(filename)))而不是逐行阅读?

    public static void main(String... p) throws IOException {

        List<SensorInfo> readings = new ArrayList<>();

        String filedata = readFile("client-temp.txt");

        SensorInfo info = new SensorInfo(filedata);
        readings.add(info);

        String data = createStringFromInfo(readings);
        System.out.println("Lines: " + readings.size());
        writeFile("datastore.txt", data);
    }
}

WriteFile的

public static void writeFile(String filename, String content)
    {
        try
        {
            Files.write(get(filename), content.getBytes());
        } 
        catch (IOException e)
        {
            System.out.println("Error wiring file: " + e);
        }
    }

createStringFromInfo

public static String createStringFromInfo(List<SensorInfo> infoList)
    {
        String data = "";
        for (SensorInfo info : infoList)
        {
            data += info.asData();
        }
        return data;
    }

SensorInfo http://pastebin.com/9DDDGzwV

1 个答案:

答案 0 :(得分:0)

MadProgrammer是对的。
如果我做对了,文件client-temp.txt有多行;每个表示来自单个SensorInfo对象的数据。当您将所有这些内容读入filedata并将其作为SensorInfo的构造函数的参数传递时,只有第一行将用于实例化单个SensorInfo对象,因为您可以清楚地看到从您发布的链接中的来源看到。剩下的所有行都将被丢弃。请记住,类的构造函数将始终实例化该类的单个对象 要解决此问题,您应该从文件client-temp.txt逐行阅读并将每个文件作为参数传递,以创建将添加到列表中的新SensorInfo对象。

以下是对您的新主要方法的建议:

public static void main(String[] args) {
    List<SensorInfo> readings = new ArrayList<>();

    try (BufferedReader br = new BufferedReader(new FileReader("client-temp.txt"))) {
        String line = br.readLine();

        while (line != null) {
            readings.add(new SensorInfo(line));
            line = br.readLine();
        }
    } catch (IOException e) {
        System.out.println("Unable to read data file");
        e.printStackTrace();
        System.exit(1);
    }

    String data = createStringFromInfo(readings);
    System.out.println("Lines: " + readings.size());
    writeFile("datastore.txt", data);
}

此致