مثال على Java FileWriter

Java FileWriter

  • فئة FileWriter في جافا هي جزء من حزمة java.io.
  • FileWriter هو فئة فرعية من فئة java.io.OutputStreamWriter.
  • FileWriter مخصصة لكتابة تيارات من الأحرف.
  • تُستخدم FileWriter للكتابة إلى ملفات الأحرف. تسمح لك طرقها write() بكتابة أحرف أو سلاسل أحرف إلى ملف.
  • عادةً ما يتم لف FileWriters بواسطة كائنات كتاب Writer على مستوى أعلى ، مثل BufferedWriter أو PrintWriter ، التي توفر أداءً أفضل وطرقًا على مستوى أعلى وأكثر مرونة لكتابة البيانات.

بناة FileWriter

  1. FileWriter(File file): ينشئ كائن FileWriter باستخدام كائن File المحدد. يُلقي استثناء IOException إذا كان الملف موجودًا ولكنه دليل بدلاً من ملف عادي أو إذا لم يكن موجودًا ولم يمكن إنشاؤه ، أو لم يمكن فتحه لأي سبب آخر.
  2. FileWriter(File file, boolean append): ينشئ كائن FileWriter باستخدام كائن File محدد. إذا كان الوسيط الثاني صحيحًا، فسيتم كتابة البايتات في نهاية الملف بدلاً من البداية. يُلقي استثناء IOException إذا كان الملف موجودًا ولكنه مجلد بدلاً من ملف عادي، أو إذا لم يكن موجودًا ولا يمكن إنشاؤه، أو لا يمكن فتحه لأي سبب آخر.
  3. FileWriter(FileDescriptor fd): ينشئ كائن FileWriter مرتبطًا بمعرف الملف المحدد.
  4. FileWriter(String fileName): ينشئ كائن FileWriter باستخدام اسم الملف المحدد. يُلقي استثناء IOException إذا كان الملف المسمى موجودًا ولكنه مجلد بدلاً من ملف عادي، أو إذا لم يكن موجودًا ولا يمكن إنشاؤه، أو لا يمكن فتحه لأي سبب آخر.
  5. FileWriter(String fileName, boolean append): ينشئ كائن FileWriter باستخدام اسم الملف المحدد وبوجود قيمة بوليانية تشير إلى ما إذا كان يجب إلحاق البيانات المكتوبة. إذا كان الوسيط الثاني صحيحًا، فسيتم كتابة البيانات في نهاية الملف بدلاً من البداية. يُلقي استثناء IOException إذا كان الملف المسمى موجودًا ولكنه مجلد بدلاً من ملف عادي، أو إذا لم يكن موجودًا ولا يمكن إنشاؤه، أو لا يمكن فتحه لأي سبب آخر.

Java FileWriter Example

يُورِثُ FileWriter الأسلوب من فئات java.io.OutputStreamWriter و java.io.Writer. دعونا نلقي نظرة على الأساليب أدناه مع أمثلة.

write(int c)

تقوم هذه الطريقة بكتابة حرف واحد محدد بواسطة int c.

package com.journaldev.io.filewriter;

import java.io.FileWriter;
import java.io.IOException;

/**
 * Java write file using FileWriter write method
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteIntExample {

	public static void main(String[] args) {
		FileWriter fileWriter = null;
		try {
			fileWriter = new FileWriter("D:/data/file.txt");
			// الأسلوب الذي تمت ميراثه من java.io.OutputStreamWriter 
			fileWriter.write(65);
			fileWriter.write(66);
			fileWriter.write(67);
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			try {
				if (fileWriter != null) {
					fileWriter.flush();
					fileWriter.close();					
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

FileWriter تنفيذ واجهة AutoCloseable، لذلك يمكننا استخدام try with resources عند استخدام فئة FileWriter.

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter write method using try with resource
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteIntTryWithResource {

	public static void main(String[] args) {
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			// الأسلوب الذي تمت ميراثه من java.io.OutputStreamWriter 
			fileWriter.write(65);
			fileWriter.write(66);
			fileWriter.write(67);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

ملحوظة: في البرنامج أعلاه fileWriter.write(65) سيقوم بكتابة A في الملف لأن القيمة 65 هي القيمة العشرية للحرف A، لذلك سيتم تحويل العدد الصحيح 65 إلى حرف A والشيء نفسه بالنسبة للقيم الأخرى.

write(String str, int off, int len)

تقوم هذه الطريقة بكتابة جزء من السلسلة str من int off إلى int len.

  • str: السلسلة التي سيتم كتابتها
  • off: الإزاحة منها لبدء قراءة الأحرف
  • len: عدد الأحرف التي سيتم كتابتها

إذا كانت قيمة معامل الطول سالبة، فلن يتم كتابة أي أحرف.

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter write(String  s,  int  off,  int  len) method
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteStringExample {

	public static void main(String[] args) {
		String data = "This is FileWriter Example.";
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			//الطريقة الموروثة من java.io.OutputStreamWriter 
			fileWriter.write(data, 8, 10);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

write(char[] cbuf, int off, int len)

تقوم هذه الطريقة بكتابة جزء من مصفوفة الأحرف المحددة بواسطة char[] cbuf من int off إلى int len.

  • cbuf: مصفوفة أحرف
  • off: الإزاحة من حيث يبدأ قراءة الأحرف
  • len : عدد الأحرف للكتابة
package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter write(char[] cbuf,  int  off,  int  len) method
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteCharArray {

	public static void main(String[] args) {
		char[] data = "This is FileWriter Example.".toCharArray();
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			//الطريقة الموروثة من java.io.OutputStreamWriter 
			fileWriter.write(data, 8, 10);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

write(char[] cbuf)

تقوم هذه الطريقة بكتابة مصفوفة الأحرف المحددة بواسطة cbuf.

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter write(char[] cbuf) method
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteCharArrayExample {

	public static void main(String[] args) {
		char[] data = "This is FileWriter Example.".toCharArray();
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			//الطريقة الموروثة من java.io.Writer 
			fileWriter.write(data);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

write(String str)

تقوم هذه الطريقة بكتابة قيمة السلسلة في الملف المحدد بواسطة str.

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter write(String  str) method
 * 
 * @author pankaj
 *
 */
public class FileWriterWriteString {

	public static void main(String[] args) {
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			//الطريقة الموروثة من java.io.Writer 
			fileWriter.write("JournalDev");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

append(char c)

تقوم هذه الطريقة بإلحاق الحرف المحدد إلى هذا الكاتب حيث يكون c هو الحرف ذو 16 بت الذي يتم إلحاقه.

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file using FileWriter append(char c) method
 * 
 * @author pankaj
 *
 */
public class FileWriterAppendCharacter {

	public static void main(String[] args) {
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			//طريقة موروثة من java.io.Writer 
			fileWriter.write("JournalDev");
			fileWriter.append('C');
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

flush()

تقوم هذه الطريقة بتفريغ التيار. عند استدعاء طريقة flush()، يتم كتابة البيانات فوراً إلى ملف الإخراج.

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file with FileWriter flush() method
 * 
 * @author pankaj
 *
 */
public class FileWriterFlushExample {

	public static void main(String[] args) {
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			//طريقة موروثة من java.io.Writer 
			fileWriter.write("JournalDev");
			//طريقة موروثة من java.io.OutputStreamWriter
			fileWriter.flush();
			
			fileWriter.write(" Tutorials");
			fileWriter.flush();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

close()

تقوم هذه الطريقة بتفريغ التيار قبل إغلاقه. بمجرد إغلاق التيار، سيتسبب استدعاء طريقة write() أو flush() في رمي استثناء IOException. إغلاق تيار تم إغلاقه مسبقًا لا يؤثر.

package com.journaldev.io.filewriter;

import java.io.FileWriter;

/**
 * Java write file with FileWriter close() method
 * 
 * @author pankaj
 *
 */
public class FileWriterCloseExample {

	public static void main(String[] args) {
		try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) {
			//طريقة موروثة من java.io.Writer 
			fileWriter.write("JournalDev");
			//طريقة موروثة من java.io.OutputStreamWriter
			fileWriter.close();;
			
			fileWriter.write(" Tutorials");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

java.io.IOException: Stream closed
	at sun.nio.cs.StreamEncoder.ensureOpen(Unknown Source)
	at sun.nio.cs.StreamEncoder.write(Unknown Source)
	at sun.nio.cs.StreamEncoder.write(Unknown Source)
	at java.io.OutputStreamWriter.write(Unknown Source)
	at java.io.Writer.write(Unknown Source)
	at com.journaldev.examples.FileWriterCloseExample.main(FileWriterCloseExample.java:20)

FileWriter vs FileOutputStream

  • FileWriter مخصص لكتابة تيارات الأحرف بينما يُستخدم FileOutputStream لكتابة تيارات البايتات الخام.
  • FileWriter يتعامل مع أحرف بحجم 16 بت بينما يتعامل FileOutputStream مع بايتات بحجم 8 بت.
  • FileWriter يمكنه التعامل مع سلاسل يونيكود بينما يكتب FileOutputStream البايتات إلى ملف ولا يقبل الأحرف أو السلاسل لذلك يحتاج إلى تغليفه بواسطة OutputStreamWriter لقبول السلاسل.

تحقق أيضًا من java write file لمزيد من المعلومات حول كيفية كتابة الملف في جافا. هذا كل شيء بالنسبة لـ Java FileWriter، آمل ألا يكون قد تم تفويت أي شيء مهم هنا.

يمكنك تنزيل جميع أمثلة الشفرة من مستودعنا على GitHub Repository.

المرجع: API Doc

Source:
https://www.digitalocean.com/community/tutorials/java-filewriter-example