Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.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
Android 缓冲区写入程序在everyline重写_Android_File_File Io_Bufferedwriter - Fatal编程技术网

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
本身的目的是将多个写入缓冲到一个大写入中。所以,你的选择。=)