سؤال

يجب أن تكتب هذه الطريقة أحرفًا عشوائية، لكنها لا تكتب أي شيء على الإطلاق.ربما أفعل شيئًا خاطئًا بغباء هنا، لكن طوال حياتي لا أستطيع العثور عليه.

public void writeRandomChunk(String fileName) {
    try {
        File saveFile = new File(folderName + '/' + fileName);

        PrintWriter writer = new PrintWriter(
                             new BufferedWriter(
                             new FileWriter(saveFile)));

        Random r = new Random(System.currentTimeMillis());

        for (int i = 0; i < chunkSize; i++) {
            for (int j = 0; j < chunkSize; j++) {
                writer.print((char)(r.nextInt(26) + 'a'));
            }
            writer.println();
        }

    } catch (Exception e) {
        System.out.println("Error in WorldFile writeRandomFile:\n"
                           + e.getLocalizedMessage());
    }
}
هل كانت مفيدة؟

المحلول

كما هو الحال مع أي تدفق (وهذا ينطبق على معظم اللغات)، تحتاج إلى إغلاقه عند الانتهاء.

تم تحسين التدفقات لتكون سريعة، ونتيجة لذلك، لا تظهر جميع البيانات التي تكتبها لهم على الفور في الملف.عندما انت close() أو flush() دفق، تتم كتابة البيانات إلى الملف (أو أي آلية تخزين أخرى تستخدمها).

في حالتك، جرّب ما يلي بدلاً من ذلك.

public void writeRandomChunk(String fileName) {
    PrintWriter writer = null;
    try {
        File saveFile = new File(folderName + '/' + fileName);
        writer = new PrintWriter(
                             new BufferedWriter(
                             new FileWriter(saveFile)));

        Random r = new Random(System.currentTimeMillis());

        for (int i = 0; i < chunkSize; i++) {
            for (int j = 0; j < chunkSize; j++) {
                writer.print((char)(r.nextInt(26) + 'a'));
            }
            writer.println();
        }

    } catch (Exception e) {
        System.out.println("Error in WorldFile writeRandomFile:\n"
                           + e.getLocalizedMessage());
    } finally {
        if (writer != null)
            writer.close();
    }
}

نصائح أخرى

تحتاج إلى مسح () و / أو إغلاق () الملف في مرحلة ما.

لم تغلق الكاتب جربه في النهاية.

giveacodicetagpre.

يجب عليك دائما إغلاق دفقك.جرب هذا النمط مع الكتاب:

giveacodicetagpre.

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