我正在尝试将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
答案 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);
}
此致