جافا إنشاء ملف جديد

إن إنشاء ملف هو عملية إدخال/إخراج شائعة جدًا. اليوم سنتطرق إلى طرق مختلفة لإنشاء ملف في جافا.

جافا إنشاء ملف

هناك ثلاث طرق شائعة لإنشاء ملف في جافا. دعونا نلقي نظرة عليها واحدة تلو الأخرى.

  1. File.createNewFile()

    java.io.File class يمكن استخدامه لإنشاء ملف جديد في جافا. عندما نقوم بتهيئة كائن File، نوفر اسم الملف ثم يمكننا استدعاء طريقة createNewFile() لإنشاء ملف جديد في جافا. تعيد طريقة createNewFile() في الفئة File true إذا تم إنشاء ملف جديد و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 موجود بالفعل في مجلد الجذر للمشروع
    
  2. FileOutputStream.write(byte[] b)

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

    String fileData = "بانكاج كومار";
    FileOutputStream fos = new FileOutputStream("name.txt");
    fos.write(fileData.getBytes());
    fos.flush();
    fos.close();
    
  3. 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