يمكن أباتشي FileUtils.writeLines() إلى إلحاق إلى الملف إذا كان موجود

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

سؤال

على العموم FileUtils تبدو باردة جدا ، وأنا لا يمكن أن نعتقد أنها لا يمكن أن تكون مصنوعة من إلحاق ملف.

File file = new File(path);
FileUtils.writeLines(file, printStats(new DateTime(), headerRequired));

أعلاه فقط يستبدل محتويات الملف في كل مرة ، أود فقط أن نضع علامات هذه الأشياء فقط في نهاية هذا الرمز.

fw = new FileWriter(file, true);
try{
    for(String line : printStats(new DateTime(), headerRequired)){
        fw.write(line + "\n");
    }
}
finally{ 
    fw.close();
}

لقد بحثت جافادوك ولكن وجدت شيئا!ما أنا في عداد المفقودين ؟

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

المحلول

يمكنك استخدام IOUtils.writeLines(), يتلقى كاتب الكائن الذي يمكنك تهيئة مثل في المثال الثاني.

نصائح أخرى

هناك الآن طريقة مثل appendString(...) في FileUtils الدرجة.

ولكن يمكنك الحصول على Outputstream من FileUtils.openOutputStream(...) و من الكتابة عليه باستخدام

write(byte[] b, int off, int len) 

يمكنك كالكولتي الخروج ، حتى أن كنت سوف apend إلى الملف.

تحرير

بعد قراءة دافيدز الجواب أدركت أن BufferedWriter سوف قيام بهذه المهمة بالنسبة لك

BufferedWriter output = new BufferedWriter(new FileWriter(simFile));
output.append(text);

كما أباتشي FileUtils 2.1 لديك هذه الطريقة:

ساكنة باطلة كتابة(ملف ملف ، CharSequence بيانات منطقية إلحاق)

هناك الزائد عن FileUtils.writelines() الذي يأخذ المعلمة على ما إذا كان إلحاق.

public static void writeLines(File file,
          Collection<?> lines,
          boolean append)
                   throws IOException

الملف - الملف إلى الكتابة إلى

خطوط - خطوط الكتابة ، إدخالات فارغة تنتج فارغة الخطوط

إلحاق - إذا كان هذا صحيحا ، ثم خطوط ستضاف إلى نهاية الملف بدلا من الكتابة

Case1:

FileUtils.writeLine(file_to_write, "line 1");
FileUtils.writeLine(file_to_write, "line 2");

file_to_write سوف تحتوي فقط

line 2

أول كتابة إلى الملف نفسه عدة مرات سوف الكتابة فوق الملف.

Case2:

FileUtils.writeLine(file_to_write, "line 1");
FileUtils.writeLine(file_to_write, "line 2", true);

file_to_write سوف تحتوي على

line 1
line 2

الدعوة الثانية سوف إلحاقي إلى نفس الملف.

التحقق من هذا من جافا الوثائق الرسمية للحصول على مزيد من التفاصيل.https://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#writeLines(java.io.File, java.util.جمع منطقية)

هل يمكن أن تفعل شيئا مثل

List x = FileUtils.readLines(file);
x.add(String)
FileUtils.writelines(file,x);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top