سؤال

أنا وصديقي يعملون في برنامج للحصول على دورة البرمجة الموجهة للكائنات في الكلية. نحن نحاول كتابة نص في ملف كقاعدة بيانات للمعلومات. المشكلة هي أنه عندما نحاول قراءة الخطوط المقابلة مع Bufferedreader، لا يمكننا معرفة كيفية قراءة الأسطر الصحيحة. الوظائف الوحيدة المتاحة تبدو تقرأ ()، والتي تقرأ حرفا فقط. ReadLine () يقرأ فقط خطا فقط (وليس الخط الذي نريده أن يقرأ. تخطي () فقط يتخطى عددا من الأحرف المحددة. أي شخص لديه فكرة كيف يمكننا أن نقول البرنامج ما السطر الذي نريد قراءته؟ طريقة لدينا getanswer () مع حجة INT ROWMN TROMN هو الشخص الذي نحاول القيام به: superclass: http://pastebin.com/d2d9ac07f.الفئة الفرعية غير ذي صلة (معظمها لأننا لم نكتتبه بعد). بالطبع هو جافا نعمل معها. شكرا مسبقا.

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

المحلول

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

لا توجد طريقة في BufferedReader أو فئة المكتبة القياسية الأخرى التي ستقرأ رقم السطر N تلقائيا.

نصائح أخرى

استخدام القراء المخزنة. Readline ()؛ الطريقة حتى تصل إلى البيانات التي تحتاجها. رمي بعيدا كل ما لا تفعله ثم تخزين البيانات التي تحتاجها. منحت هذه ليست فعالة يجب أن تنجز وظيفتك.

readLine() في Java، يقرأ ببساطة من المخزن المؤقت حتى يأتي على حرف جديد، لذلك لن تكون هناك طريقة لك لتحديدها أي يجب قراءة الخط من ملف لأنه لا توجد وسيلة ل Java لمعرفة بالضبط كم من الوقت كل سطر.

هذا السبب هو أيضا لماذا يصعب استخدامه skip() للقفز إلى خط معين.

قد يكون من الأفضل لك حلقة من خلال خطوط باستخدام readLine(), ثم عندما يكون عدادك هو المكان الذي تريد أن تكون عليه، ابدأ في المعالجة.

String line = myBufferedReader.readLine();
for(int i = 1; i < whichLine && line != null; i++){
    line = myBufferedReader.readLine();
}

/* do something */
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top