יצירת קובץ היא פעולת קלט/פלט נפוצה מאוד. היום נסתכל על דרכים שונות ליצירת קובץ ב-Java.
יצירת קובץ ב-Java
קיימות שלוש שיטות פופולריות ליצירת קובץ ב-Java. בואו נסתכל עליהן אחת אחת.
-
File.createNewFile()
java.io.File
מחלקה ניתן להשתמש בה כדי ליצור קובץ חדש ב-Java. כאשר אנו מאתחלים אובייקט File, אנו מספקים את שם הקובץ ואז ניתן לקרוא לשיטתcreateNewFile()
כדי ליצור קובץ חדש ב-Java. שיטתcreateNewFile()
מחזירהtrue
אם נוצר קובץ חדש ו־false
אם הקובץ כבר קיים. שיטה זו גם מזריקה java.io.IOException כאשר היא לא מצליחה ליצור את הקובץ. הקבצים שנוצרים הם ריקים ובגודל של אפס בתים. כאשר אנו יוצרים את אובייקט ה-File על ידי העברת שם הקובץ, זה יכול להיות עם נתיב מוחלט, או שאנו יכולים לספק רק את שם הקובץ או שאנו יכולים לספק את הנתיב היחסי. עבור נתיב לא מוחלט, אובייקט File מנסה לאתר קבצים בתיקיית השורש של הפרויקט. אם אנו מריצים את התוכנית מהשורת הפקודה, עבור הנתיב לא מוחלט, אובייקט File מנסה לאתר קבצים מהתיקייה הנוכחית. בעת יצירת נתיב לקובץ, אנו צריכים להשתמש במאפיין המערכתfile.separator
כדי להפוך את התוכנית שלנו לתלוית תלויתית. בואו נסתכל על תרחישים שונים עם תוכנית Java פשוטה כדי ליצור קובץ חדש ב-Java.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+" File Created"); }else System.out.println("File "+absoluteFilePath+" already exists"); //file name only file = new File("file.txt"); if(file.createNewFile()){ System.out.println("file.txt File Created in Project root directory"); }else System.out.println("File file.txt already exists in the project root directory"); //relative path String relativePath = "tmp"+fileSeparator+"file.txt"; file = new File(relativePath); if(file.createNewFile()){ System.out.println(relativePath+" File Created in Project root directory"); }else System.out.println("File "+relativePath+" already exists in the project root directory"); } }
כאשר אנו מבצעים את התוכנית לעיל מ- 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()
פשוט מנסה ליצור את הקובץ וכל תיקייה באופן מוחלט או יחסי צריכה לה -
FileOutputStream.write(byte[] b)
אם ברצונך ליצור קובץ חדש ובו במקביל לכתוב נתונים כלשהם, ניתן להשתמש בשיטת הכתיבה של FileOutputStream. למטה מופיע קטע קוד פשוט שמציג את השימוש בשיטה זו. הכללים לנתיב מוחלט ולנתיב יחסי שנדונו לעיל חלים גם במקרה זה.
String fileData = "Pankaj Kumar"; FileOutputStream fos = new FileOutputStream("name.txt"); fos.write(fileData.getBytes()); fos.flush(); fos.close();
-
Java NIO Files.write()
ניתן להשתמש במחלקת Java NIO Files כדי ליצור קובץ חדש ולכתוב נתונים לתוכו. זו אפשרות טובה מאחר ואין צורך לדאוג לסגירת משאבי ה-IO.
String fileData = "Pankaj Kumar"; Files.write(Paths.get("name.txt"), fileData.getBytes());
זהו כל הדברים ליצירת קובץ חדש בתוכנית ג'אווה.
ניתן לבדוק דוגמאות נוספות בג'אווה בעמוד ה-GitHub שלנו.
Source:
https://www.digitalocean.com/community/tutorials/java-create-new-file