3

を使用した学生ストアの印刷で問題が発生しましたArrayList。次に、これらのさまざまな生徒を保持する静的配列を作成しました。現在、生徒を作成するために使用できる方法を見つけようとしています。これが私のコードです:

MainApp
import java.io.RandomAccessFile;



    public class MainApp
    {

        public static void main(String[] args) throws Exception 
        {
            new MainApp().start();

        }
        public void start()throws Exception 
        {
            StudentStore details = new StudentStore();
            Student a = new Student("Becky O'Brien", "DKIT26", "0876126944", "bexo@hotmail.com");
            Student b = new Student("Fabio Borini", "DKIT28", "0876136944", "fabioborini@gmail.com");
            Student c = new Student("Gaston Ramirez", "DKIT29", "0419834501", "gramirez@webmail.com");
            Student d = new Student("Luis Suarez", "DKIT7", "0868989878", "luissuarez@yahoo.com");
            Student e = new Student("Andy Carroll", "DKIT9", "0853456788", "carroll123@hotmail.com");
            details.add(a);
            details.add(b);
            details.add(c);
            details.add(d);
            details.add(e);
            //details.print();


            RandomAccessFile file = new RandomAccessFile("ContactDetails.txt","rw");

            Student[] students = {a,b,c,d,e};
            for (int i = 0;i < students.length;i++)
            {
                file.writeByte(students[i]);
            }
            file.close();


         }


     }

file.writeByte(students[i]);が正しくなく、これに適した方法が見つかりません。エラーwriteByte(int)は、型のメソッドRandomAccessFileが引数()に適用できないことを示していますStudent。これは明らかに、writeBytesメソッドがタイプの学生を受け取らないためです。

4

2 に答える 2

3

文字列は、バイトに変換する非常に簡単な方法があります。彼らはgetBytes()うまくいく方法を持っています。メソッドをオーバーロードすることで、学生の文字列表現を取得できますtoString()。だからあなたの電話はとても似ているでしょう

file.writeByte(students[i].toString().getBytes( "UTF-8" ));

編集:

getBytes()を忘れると、バイトの配列が返されます。これは機能するはずです:

byte[] bytes = students[i].toString().getBytes();
for(byte byteWrite : bytes){
    file.writeByte(byteWrite);
}
于 2012-08-06T17:59:11.703 に答える
0

RandomAccessFileファイル内のポイントを探して値を挿入することを目的としているため、目的に応じて使用することはお勧めしません。これらの行をファイルに書き込むだけの場合は、を使用しBufferedWriterます。それはあなたが必要とするすべてを持っています。

BufferedWriter file = new BufferedWriter(new FileWriter(filename));

次に書くには、次のように入力します。

file.write(students [i]);

toString()カスタムメソッドがない限り、各生徒はゴミのように見えることを警告する必要があります。

オブジェクトを読み取り不可能な形式でファイルに書き込みたいだけの場合は、チェックアウトしてくださいBufferedOutputStream

于 2012-08-06T18:01:31.250 に答える