ما هي أفضل طريقة لقراءة ملف نصي خطين في الوقت جافا ؟

StackOverflow https://stackoverflow.com/questions/455695

  •  19-08-2019
  •  | 
  •  

سؤال

BufferedReader in;

String line;
while ((line = in.readLine() != null) {
    processor.doStuffWith(line);
}

هذا هو كيف لي أن معالجة الملف سطرا سطرا.في هذه الحالة, لكن, أريد أن أرسل اثنين أسطر من النص إلى المعالج في كل التكرار.(ملف نصي أنا المعالجة أساسا مخازن سجل واحد على خطين ، لذا سأرسل سجل واحد إلى المعالج في كل مرة.)

ما هي أفضل طريقة للقيام بذلك في جافا ؟

هل كانت مفيدة؟

المحلول

لماذا لا مجرد قراءة اثنين من خطوط ؟

BufferedReader in;
String line;
while ((line = in.readLine() != null) {
    processor.doStuffWith(line, in.readLine());
}

هذا يفترض أنك يمكن أن تعتمد على وجود كامل 2-خط مجموعات البيانات في ملف الإدخال.

نصائح أخرى

BufferedReader in;
String line1, line2;

while((line1 = in.readLine()) != null 
   && (line2 = in.readLine()) != null))
{
    processor.doStuffWith(line1, line2);
}

أو هل يمكن لسلسلة لهم إذا أردت.

أود أن ريفاكتور رمز تبدو الى حد ما مثل هذا:

RecordReader recordReader;
Processor processor;

public void processRecords() {
    Record record;

    while ((record = recordReader.readRecord()) != null) {
        processor.processRecord(record);
    }
}

بالطبع في هذه الحالة عليك بطريقة ما ضخ الصحيح سجل القارئ في هذه الفئة ولكن هذا لا ينبغي أن يكون مشكلة.

واحد تنفيذ RecordReader يمكن أن تبدو مثل هذا:

class BufferedRecordReader implements RecordReader
{
    BufferedReader in = null;

    BufferedRecordReader(BufferedReader in)
    {
        this.in = in;
    }
    public Record readRecord()
    {
        String line = in.readLine();

        if (line == null) {
            return null;
        }

        Record r = new Record(line, in.readLine());

        return r;
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top