Android 缓冲区写入程序在everyline重写
我已经为缓冲写入程序设置了一个循环,以便将字符串数组写入文件,这似乎足够简单,对吗?出于某种原因,我肯定我会因为错过它而感到愚蠢,但它在每次迭代中都会覆盖上一行文本 下面是循环Android 缓冲区写入程序在everyline重写,android,file,file-io,bufferedwriter,Android,File,File Io,Bufferedwriter,我已经为缓冲写入程序设置了一个循环,以便将字符串数组写入文件,这似乎足够简单,对吗?出于某种原因,我肯定我会因为错过它而感到愚蠢,但它在每次迭代中都会覆盖上一行文本 下面是循环 for(int i = 0; listnames.length > i; i++){ String[] data = getItemsandAisles(listnames[i]); for(int x = 0; data.length > x; x ++){ Buff
for(int i = 0; listnames.length > i; i++){
String[] data = getItemsandAisles(listnames[i]);
for(int x = 0; data.length > x; x ++){
BufferedWriter bw = new BufferedWriter(new FileWriter(listfile[i]));
System.out.println("Writing " + data[x] + " to file " + listfile[i].getAbsolutePath());
bw.write(data[x]);
bw.flush();
bw.newLine();
bw.close();
}
}
这是我输入的所有输出的log cat,这只是第一次迭代,因为它有最多的项
Writing COFFEE CREAMERS 5 to file /data/data/dev.shaw.MyShoppingPlanner/files/sample list.txt
Writing SAUCES APPLE CRANBERRY 6 to file /data/data/dev.shaw.MyShoppingPlanner/files/sample list.txt
Writing COCOA 5 to file /data/data/dev.shaw.MyShoppingPlanner/files/sample list.txt
Writing UMBRELLAS Front End Rack to file /data/data/dev.shaw.MyShoppingPlanner/files/sample list.txt
Writing PET NEEDS 9A\/B to file /data/data/dev.shaw.MyShoppingPlanner/files/sample list.txt
Writing ITALIAN CHEESE 17 to file /data/data/dev.shaw.MyShoppingPlanner/files/sample list.txt
Writing EGGS Dairy to file /data/data/dev.shaw.MyShoppingPlanner/files/sample list.txt
Writing BACON Meat to file /data/data/dev.shaw.MyShoppingPlanner/files/sample list.txt
然后,当我从设备上下载txt文件时,最终的输出仅仅是一行字符
BACON Meat
这让我相信它并不是在创造一条新的生产线。任何帮助都将不胜感激。我知道这里有一些类似的问题,但我尝试了所有这些解决方案,但它们似乎无法解决问题 尝试在第二个循环之前打开文件,如下所示:
for(int i = 0; listnames.length > i; i++){
BufferedWriter bw = new BufferedWriter(new FileWriter(listfile[i]));
String[] data = getItemsandAisles(listnames[i]);
for(int x = 0; data.length > x; x ++){
System.out.println("Writing " + data[x] + " to file " + listfile[i].getAbsolutePath());
bw.write(data[x]);
bw.newLine();
//bw.flush(); --> not necessary here unless you really need the data on the disk "right now"
}
bw.flush();
bw.close();
}
或者更好,您可能希望使用StringBuilder
,如下所示
for(int i = 0; listnames.length > i; i++){
StringBuilder sb = new StringBuilder();
String[] data = getItemsandAisles(listnames[i]);
for(int x = 0; data.length > x; x ++){
System.out.println("Writing " + data[x] + " to file " + listfile[i].getAbsolutePath());
sb.append(data[x]).append("\n");
}
BufferedWriter bw = new BufferedWriter(new FileWriter(listfile[i]));
bw.write(sb.toString());
bw.flush();
bw.close();
}
然而,BufferedWriter
本身的目的是将多个写入缓冲到一个大写入中。所以,你的选择。=)