سؤال

وأنا باستخدام BufferedReader وPrintWriter أن تذهب من خلال كل سطر من ملف المدخلات، وإجراء تغيير على بعض الخطوط، وإخراج النتيجة. إذا لم خط الخضوع لتغيير، انها مطبوعة مثلما هو ملف الإخراج. لسبب ومع ذلك، فإن عملية تنتهي قبل الأوان. رمز يبدو شيئا من هذا القبيل:

BufferedReader in = new BufferedReader(new FileReader("in.txt"));
FileOutputStream out = new FileOutputStream("out.txt");
PrintWriter p = new PrintWriter(out);
String line = in.readLine();

while(line!=null)
{
   if(line is special)
      do edits and p.println(edited_line);
   else
      p.println(line);

   line = in.readLine();
}

ولكن، لسبب غريب، وهذه العملية تنتهي قبل الأوان (تقوم بطباعة فعلا نصف من خط) في نهاية جدا من ملف الإدخال بلدي. أي سبب واضح لذلك؟ ومن الواضح أن انتهت حلقة في حين من قيمة خالية. وانها في نهاية بلدي 250K + خط ملف txt. شكرا!

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

المحلول

وأين كنت دافق / إغلاق PrintWriter أو FileOutputStream؟ إذا إنهاء البرنامج ولم يتم ذلك، لن تكون مكتوبة جميع النتائج الخاص بها.

وتحتاج out.close() (ربما p.flush() كذلك؟) في نهاية العملية الخاصة بك لإغلاق دفق إخراج ملف

نصائح أخرى

وحاول إضافة p.flush () بعد الحلقة.

وPrintWriter لا يكون autoflushing تمكين، لذا من المرجح أن الجزء الأخير من الملف غير مسح قبل إنهاء البرنامج.

وإضافة p.flush() بعد حلقة في حين الخاص بك ينبغي أن تفعل خدعة.

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