2009-03-29 29 views
0

私は、配列リストの内容をテキストファイルに書き込むように求めている本の練習をしようとしています。私は単一の文字列を返すメソッドを作成する必要がありますか?ファイルに配列を書き込む

import java.util.ArrayList; 
import java.io.FileWriter; 
import java.util.Iterator; 

/** 
* A class to maintain an arbitrarily long list of notes. 
* Notes are numbered for external reference by a human user. 
* In this version, note numbers start at 0. 
* 
* @author David J. Barnes and Michael Kolling. 
* @version 2008.03.30 
*/ 
public class Notebook { 
    // Storage for an arbitrary number of notes. 
    private ArrayList<String> notes; 

    /** 
    * Perform any initialization that is required for the 
    * notebook. 
    */ 
    public Notebook() { 
     notes = new ArrayList<String>(); 
    } 

    /** 
    * Store a new note into the notebook. 
    * @param note The note to be stored. 
    */ 
    public void storeNote(String note) { 
     notes.add(note); 
    } 

    /** 
    * @return The number of notes currently in the notebook. 
    */ 
    public int numberOfNotes() { 
     return notes.size(); 
    } 

    /** 
    * Remove a note from the notebook if it exists. 
    * @param noteNumber The number of the note to be removed. 
    */ 
    public void removeNote(int noteNumber) { 
     if(noteNumber < 0) { 
      // This is not a valid note number, so do nothing. 
     } else if(noteNumber < numberOfNotes()) { 
      // This is a valid note number. 
      notes.remove(noteNumber); 
     } else { 
      // This is not a valid note number, so do nothing. 
     } 
    } 

    /** 
    * List all notes in the notebook. 
    */ 
    public void listNotes() { 
     for(String note : notes) { 
      System.out.println(note); 
     } 
    } 

    /** 
    * 
    */ 
    public void writeToFile() { 
     try{ 
      FileWriter writer = new FileWriter("file.txt"); 

      for(String str : notes){ 
       writer.write(str.toString()); 
      } 
     } 
     catch(Exception e){ 
      System.out.println("some error..."); 
     } 
    } 
} 

編集:私は今が午前問題は、私はwriter.write('\n')を使用している場合でも、私は新しい行の各文字列を取得することができないということですが、私は私がwriter.close();忘れて実現;)

+0

? –

+0

私はwriter.write( '\ n')を使用しても、新しい行に各文字列を取得できないという問題があります。 –

+0

プラットフォームによっては、キャリッジリターンや改行が必要な場合があります.... –

答えて

1

あなたがしたいです完了時にFileWriterを閉じるのを見てください。それ以外の場合、FileWriterを強制的ににすると、その操作は完了する?私には間違って見える

2

もの:

  • 呼び出しのtoString()文字列には、作家が
  • ノートは、それらの間の任意の区切りなしのファイルに書かれて閉じられることはありません
  • 純粋な廃棄物にあります。このファイルは読みにくいかもしれません。
0

文字列を区切る方法がないため、文字列を読み込んだときに、文字列がどこで終了し、次の文字列が始まるのか分かりません。 Javaの文字列はUnicodeなので、あなたの文字列に合法的に存在しないファイルに書き込むことはほとんどありません。ですから、私がやりたいことは、文字列の長さを表すintと文字列を書くことで、どれだけ読むべきかを知ることです。逆に、Javaのシリアライゼーションメソッドを使用してList全体をファイルにシリアライズするだけで調べることができます。

しかし、私はデータベースの人であり、PreparedStatementsとResultSetsに最も慣れているので、おそらくすべてをSQLiteデータベースとしてやってみようと思います。

1

システムの改行プロパティを文字列変数で取得します。

文字列の改行= System.getProperty( "line.separator");

ファイル書き込みモジュールでは、各行の最後に改行を追加します。

writer.write(str.toString()+ newline);

非常にあなたのコードを変更することなく、
1

...

あなたは、ノートブックを作成し、それにいくつかのメモを追加し、その後、あなたのWRITETOFILE()メソッドを呼び出したときに何が起こる
try{ 
    PrintWriter writer = new PrintWriter(new FileWriter("file.txt")); 

    for(String str : notes){ 
     writer.println(str.toString()); 
    } 
関連する問題