Запись массива в файл - PullRequest
0 голосов
/ 23 января 2011

Хорошо, у меня есть свой класс (извините за форматирование, я не очень знаком с сайтом)

import java.io.*;  
public class writingArray  
{  
    public static void writeToFile(String fileName, String[] input) {  
        PrintWriter printWriter;  
        try {    
            printWriter = new PrintWriter(new FileOutputStream(fileName, true));
            int length = input.length;    
            int i;  
            for(i = 0; ++i < length; i++) {  
                printWriter.println(input[i]);  
            }   
            printWriter.close();    
        }  
        catch(IOException e) {  
            System.out.println(e.getMessage());  
        }  
    }  
}

Проблема в том, что я хочу записать массив в файл, где каждая запись включенаотдельной строкой и хочу стереть файл в начале с каждой записи.Любой совет, что делать?Потому что все, что мне удалось сделать, это написать последнюю запись в массиве, стирая все предыдущие записи, и все же я могу написать последнюю запись несколько раз под собой.

Спасибо ^^

Ответы [ 4 ]

2 голосов
/ 23 января 2011
for(i = 0; ++i < length; i++) {

Я не думаю, что вы хотите увеличить я в два раза. Избавиться от ++ я.

2 голосов
/ 23 января 2011

Я настоятельно рекомендую использовать библиотеку http://commons.apache.org/io/api-release/org/apache/commons/io/FileUtils.html, которая уже решила многие из этих проблем. Если вы преобразуете свой массив в список, вы можете использовать:

public static void writeLines(File file,
                              Collection<?> lines)
                       throws IOException

Записывает значение toString () каждого предмет в коллекции до указанного Файл строка за строкой. ВМ по умолчанию кодировка и окончание строки по умолчанию будет использоваться.

Авторы библиотеки думали о многих проблемах, которые большинство людей не решают, таких как окончания строк, кодировки, перехват ошибок и т. Д. Это также, вероятно, будет максимально эффективным для общего использования.

0 голосов
/ 23 января 2011
import java.io.*;

public class writingArray {
    public static void writeToFile(String fileName, String[] input) {
        PrintWriter printWriter = null;
        try {
            printWriter = new PrintWriter(new FileOutputStream(fileName));
            for (int i = 0; i < input.length; i++) {
                printWriter.println(input[i]);
            }
        } catch (IOException e) {
            System.out.println(e.getMessage());
        } finally {
            if (printWriter != null) {
                printWriter.close();
            }
        }
    }

}
0 голосов
/ 23 января 2011

for(i = 0; ++i < length; i++) { выглядит правильно, это должно быть for(i = 0; i < length; i++) {?

Или, еще лучше: for (String line : input) { }

Кроме того, new FileOutputStream(fileName, true) не очистит файл, а добавит к нему.

...