0

よし、これでクラスができた (書式については申し訳ありません。サイトにあまり詳しくありません)。

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

4 に答える 4

2

これらの問題の多くにすでに取り組んでいるライブラリhttp://commons.apache.org/io/api-release/org/apache/commons/io/FileUtils.htmlを使用することを強くお勧めします。配列をリストに変換すると、次を使用できます。

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

コレクション内の各項目の toString() 値を、指定された File に 1 行ずつ書き込みます。デフォルトの VM エンコーディングとデフォルトの行末が使用されます。

ライブラリの作成者は、行末、エンコーディング、エラー トラップなど、ほとんどの人が知らない多くの問題について考えてきました。また、一般的な使用に対して可能な限り効率的である可能性があります。

于 2011-01-23T18:11:58.627 に答える
2
for(i = 0; ++i < length; i++) {

i を 2 倍に増やしたくないと思います。++i を取り除きます。

于 2011-01-23T18:12:12.657 に答える
0
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();
            }
        }
    }

}
于 2011-01-23T18:18:18.823 に答える
0

for(i = 0; ++i < length; i++) {は正しく見えますが、これは正しいはずfor(i = 0; i < length; i++) {ですか?

または、さらに良い:for (String line : input) { }

また、new FileOutputStream(fileName, true)ファイルをクリアせずに追加します。

于 2011-01-23T18:14:39.927 に答える