إن إنشاء ملف هو عملية إدخال/إخراج شائعة جدًا. اليوم سنتطرق إلى طرق مختلفة لإنشاء ملف في جافا.
جافا إنشاء ملف
هناك ثلاث طرق شائعة لإنشاء ملف في جافا. دعونا نلقي نظرة عليها واحدة تلو الأخرى.
-
File.createNewFile()
java.io.File
class يمكن استخدامه لإنشاء ملف جديد في جافا. عندما نقوم بتهيئة كائن File، نوفر اسم الملف ثم يمكننا استدعاء طريقةcreateNewFile()
لإنشاء ملف جديد في جافا. تعيد طريقةcreateNewFile()
في الفئة Filetrue
إذا تم إنشاء ملف جديد وfalse
إذا كان الملف موجودًا بالفعل. تقوم هذه الطريقة أيضًا بإلقاء استثناء java.io.IOException عندما لا يتمكن من إنشاء الملف. الملفات التي تم إنشاؤها فارغة وليست لديها بايتات. عندما ننشئ كائن File عن طريق تمرير اسم الملف، يمكن أن يكون مع المسار المطلق، أو يمكننا توفير اسم الملف فقط أو يمكننا توفير المسار النسبي. بالنسبة للمسار غير المطلق، يحاول كائن File تحديد مواقع الملفات في مجلد الجذر للمشروع. إذا قمنا بتشغيل البرنامج من سطر الأوامر، للمسار غير المطلق، يحاول كائن File تحديد مواقع الملفات من المجلد الحالي. أثناء إنشاء مسار الملف، يجب أن نستخدم خاصية النظامfile.separator
لجعل برنامجنا مستقلًا عن المنصة. دعنا نرى سيناريوهات مختلفة مع برنامج جافا بسيط لإنشاء ملف جديد في جافا.package com.journaldev.files; import java.io.File; import java.io.IOException; public class CreateNewFile { /** * This class shows how to create a File in Java * @param args * @throws IOException */ public static void main(String[] args) throws IOException { String fileSeparator = System.getProperty("file.separator"); //absolute file name with path String absoluteFilePath = fileSeparator+"Users"+fileSeparator+"pankaj"+fileSeparator+"file.txt"; File file = new File(absoluteFilePath); if(file.createNewFile()){ System.out.println(absoluteFilePath+" تم إنشاء الملف"); }else System.out.println("الملف "+absoluteFilePath+" موجود بالفعل"); //file name only file = new File("file.txt"); if(file.createNewFile()){ System.out.println("تم إنشاء ملف file.txt في مجلد الجذر للمشروع"); }else System.out.println("الملف file.txt موجود بالفعل في مجلد الجذر للمشروع"); //relative path String relativePath = "tmp"+fileSeparator+"file.txt"; file = new File(relativePath); if(file.createNewFile()){ System.out.println(relativePath+" تم إنشاء الملف في مجلد الجذر للمشروع"); }else System.out.println("الملف "+relativePath+" موجود بالفعل في مجلد الجذر للمشروع"); } }
عند تنفيذ البرنامج أعلاه من بيئة Eclipse IDE للمرة الأولى، يتم إنتاج الناتج التالي.
/Users/pankaj/file.txt تم إنشاء الملف تم إنشاء ملف file.txt في مجلد الجذر للمشروع Exception in thread "main" java.io.IOException: لا يوجد ملف أو دليل من هذا النوع at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(File.java:947) at com.journaldev.files.CreateNewFile.main(CreateNewFile.java:32)
بالنسبة للمسار النسبي، يتم إلقاء استثناء IOException لأن مجلد
tmp
غير موجود في مجلد الجذر للمشروع. لذا من الواضح أنcreateNewFile()
يحاول فقط إنشاء الملف ويجب أن يكون أي مجلد سواء المسار المطلق أو النسبي موجودًا بالفعل، وإلا سيقوم بإلقاءIOException
. لذا قمت بإنشاء مجلد “tmp” في مجلد الجذر للمشروع وقمت بتنفيذ البرنامج مرة أخرى، وهنا هو الناتج.الملف /Users/pankaj/file.txt موجود بالفعل الملف file.txt موجود بالفعل في مجلد الجذر للمشروع تم إنشاء ملف tmp/file.txt في مجلد الجذر للمشروع
الملفان الأولان كانا موجودين بالفعل، لذا
createNewFile()
يعيدfalse
، تم إنشاء الملف الثالث في مجلد tmp ويعيد true. أي تنفيذ لاحق يؤدي إلى الناتج التالي:الملف /Users/pankaj/file.txt موجود بالفعل الملف file.txt موجود بالفعل في مجلد الجذر للمشروع الملف tmp/file.txt موجود بالفعل في مجلد الجذر للمشروع
إذا قمت بتشغيل نفس البرنامج من مجلد الفصول التالي، إليك الناتج.
//first execution from classes output directory pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile الملف /Users/pankaj/file.txt موجود بالفعل تم إنشاء ملف file.txt في مجلد الجذر للمشروع Exception in thread "main" java.io.IOException: لا يوجد ملف أو دليل من هذا النوع at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(File.java:947) at com.journaldev.files.CreateNewFile.main(CreateNewFile.java:32) //المجلد tmp غير موجود، دعنا ننشئه pankaj:~/CODE/JavaFiles/bin$ mkdir tmp //second time execution pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile الملف /Users/pankaj/file.txt موجود بالفعل الملف file.txt موجود بالفعل في مجلد الجذر للمشروع تم إنشاء ملف tmp/file.txt في مجلد الجذر للمشروع //third and subsequent execution pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile الملف /Users/pankaj/file.txt موجود بالفعل الملف file.txt موجود بالفعل في مجلد الجذر للمشروع الملف tmp/file.txt موجود بالفعل في مجلد الجذر للمشروع
-
FileOutputStream.write(byte[] b)
إذا كنت ترغب في إنشاء ملف جديد وفي نفس الوقت كتابة بعض البيانات فيه، يمكنك استخدام طريقة الكتابة في FileOutputStream. فيما يلي مقتطف كود بسيط لعرض استخدامه. القواعد للمسار المطلق والمسار النسبي المناقشة أعلاه قابلة للتطبيق في هذه الحالة أيضًا.
String fileData = "بانكاج كومار"; FileOutputStream fos = new FileOutputStream("name.txt"); fos.write(fileData.getBytes()); fos.flush(); fos.close();
-
Java NIO Files.write()
يمكننا استخدام فئة Java NIO Files لإنشاء ملف جديد وكتابة بعض البيانات فيه. هذا خيار جيد لأننا لا نحتاج للقلق بشأن إغلاق موارد الإدخال/الإخراج.
String fileData = "بنكاج كومار"; Files.write(Paths.get("name.txt"), fileData.getBytes());
هذا كل شيء بالنسبة لإنشاء ملف جديد في برنامج جافا.
يمكنك مراجعة المزيد من أمثلة جافا الأساسية من مستودعنا على GitHub.
Source:
https://www.digitalocean.com/community/tutorials/java-create-new-file