CodeGym /בלוג Java /Random-HE /מחלקת Java.io.File
John Squirrels
רָמָה
San Francisco

מחלקת Java.io.File

פורסם בקבוצה
במקרים רבים, התוכנית צריכה לגשת לקבצים מסוימים בעבודתה. לדוגמה, ניתן להקליט נתוני משתמש בקובץ חיצוני כלשהו, ​​וכדי לקרוא אותם, התוכנית צריכה להיות מסוגלת לעבוד איתם - לפתוח, לקרוא נתונים, אולי לערוך ולסגור. למטרות אלו, לשפת התכנות Java יש את Java.io.File Class. במאמר זה נשקול באיזה סוג כיתה מדובר וניתן דוגמה לעבודה איתה.

מהי מחלקת Java File

המחלקה File מוגדרת בחבילת java.io והיא לא עובדת ישירות עם זרמים. מחלקת Java File היא לנהל מידע על קבצים וספריות. כפי שאתה יודע, ברמת מערכת ההפעלה, קבצים וספריות הם אובייקטים שונים. עם זאת ב-Java, שניהם מתוארים על ידי אותה מחלקה File . אולי אתה תוהה מדוע לא פשוט להשתמש במחרוזות כדי להפנות לקבצים? קודם כל, כי הגישה לקבצים שונה במערכות הפעלה שונות.

בוני מחלקות קבצים

תלוי אם האובייקט Java.io.File Class צריך לייצג קובץ או ספריה, נוכל להשתמש באחד מהבנאים כדי ליצור את האובייקט: File(String pathname) במקרה זה constructor יוצר מופע חדש של File על ידי המרת שם הנתיב הנתון מחרוזת לשם נתיב מופשט. File(String myPath, String myString) בנאי זה יוצר מופע קובץ חדש ממחרוזת שם נתיב myPath וממחרוזת שם נתיב myString. קובץ (הורה של קובץ, שם מחרוזת) יוצר מופע חדש של קובץ מתוך שם נתיב מופשט של קובץ וממחרוזת שם נתיב שם. File(URI uri) במקרה זה בנאי יוצר מופע קובץ חדש על ידי המרת הקובץ הנתון: URI לשם נתיב מופשט. URI היא מחלקת Java המייצגת הפניה לזיהוי משאבים אחיד (URI). הנה דוגמה לבנאים שונים של Java.io.File Class:
import java.io.File;
import java.net.URI;
import java.net.URISyntaxException;

public class FileTest {
   public static void main(String[] args) throws URISyntaxException {
       File myFile1 = new File("d:\\MyCat");
       File myFile2 = new File ("d:\\MyCat", "cat.txt");
       File myFile3 = new File(myFile1, "cat.txt");
       URI uri = new URI ("https://docs.oracle.com/javase/7/docs/api/java/net/URI.html");
       File myFile4 = new File(uri);
   }
}

שיטות למחלקת קבצים

למחלקת Java File יש מספר שיטות המאפשרות לך לתפעל קבצים וספריות. בואו נשקול כמה מהם:
  • boolean createNewFile() יוצר קובץ חדש בנתיב המועבר לבנאי. מחזירה True אם מצליח, אחרת False

  • boolean delete() מוחק ספרייה או קובץ בנתיב המועבר לבנאי. מחזירה אמת לאחר מחיקה מוצלחת

  • boolean exists() בודק אם קובץ או ספריה קיימים בנתיב שצוין בבנאי. אם הקובץ או הספרייה קיימים, מחזירה true, אחרת מחזירה false

  • מחרוזת getAbsolutePath() מחזירה את הנתיב המוחלט עבור הנתיב שעבר לבנאי האובייקט

  • מחרוזת getName() מחזירה את השם הקצר של קובץ או ספריה

  • מחרוזת getParent() מחזירה את השם של ספריית האב

  • boolean isDirectory() מחזירה true אם הנתיב הנתון מכיל ספרייה

  • boolean isFile() מחזירה true אם יש קובץ בנתיב הנתון

  • boolean isHidden() מחזירה true אם הספרייה או הקובץ מוסתרים

  • long length() מחזיר את גודל הקובץ בבתים

  • long lastModified() מחזירה את הזמן שבו קובץ או ספריה שונו לאחרונה. הערך מייצג את מספר האלפיות השניות שחלפו מאז עידן יוניקס

  • String[] list() מחזירה מערך של קבצים וספריות משנה שנמצאים בספרייה ספציפית

  • File[] listFiles() מחזיר מערך של קבצים ותתי ספריות שנמצאים בספרייה ספציפית

  • boolean mkdir() יוצר ספרייה חדשה ומחזיר true אם מצליח

  • boolean renameTo(File dest) משנה שם קובץ או ספריה

כמה תכונות של מחלקת Java File

  • הנתיב, מופשט או מחרוזת, יכול להיות מוחלט או יחסי. ניתן לאחזר את האב של נתיב מופשט על ידי קריאה למתודה getParent() של אותה מחלקה.

  • ראשית עלינו ליצור אובייקט של המחלקה File , להעביר לו שם של קובץ או ספרייה. מערכת הקבצים יכולה להטיל הגבלות על פעולות מסוימות על אובייקט מערכת הקבצים בפועל, כגון קריאה, כתיבה וביצוע. הגבלות אלו נקראות הרשאות גישה.

  • מופעים של המחלקה File אינם ניתנים לשינוי. זה אומר שברגע שאתה יוצר קובץ, הנתיב המופשט המיוצג על ידי אובייקט הקובץ לעולם לא ישתנה.

דוגמאות לקוד כיתתי קובץ

בואו ניצור תוכנית שעובדת עם ספריות. קודם כל זה צריך ליצור ספרייה בנתיב הנתון ואז ליצור קובץ חדש ולבדוק אם הקובץ והספרייה קיימים.
import java.io.File;
import java.io.IOException;

public class FileTest2 {
   public static void main(String[] args) throws IOException {

       //create a directory using mkdir() File class method
       File dir = new File("d:\\MyDir");
       boolean created = dir.mkdir();
       if(created)
           System.out.println("Folder has been created...");
       else
           System.out.println("Folder hasn't been created...");
       File myFile = new File("d:\\MyDir\\cat.txt");
       myFile.createNewFile();
       System.out.println("File name: " + myFile.getName());
       System.out.println("Parent folder: " + myFile.getParent());
       if(myFile.exists())
           System.out.println("File exists");
       else
           System.out.println("File not found");
      }
}
הנה הפלט:
התיקיה נוצרה... שם קובץ: cat.txt תיקיית אב: d:\MyDir קיים קובץ
אגב, אם עשית הכל נכון, תוכל למצוא ספרייה וקובץ חדשים במחשב שלך. כעת נכתוב תוכנית שבה נוכל לעבוד עם הספרייה שנוצרה והקובץ. כאן אנו משתמשים בכמה מהשיטות המתוארות לעיל.
import java.io.File;

public class FileTest3 {

   public static void main(String[] args) {

       File dir = new File("d:\\MyDir");
       File myFile = new File("d:\\MyDir\\cat.txt");
       System.out.println("File name: " + myFile.getName());
       System.out.println("Parent folder: " + myFile.getParent());
       if (myFile.exists())
           System.out.println("File exists");
       else
           System.out.println("File not found");

       System.out.println("Absolute path: " + myFile.getAbsolutePath());

       if (myFile.exists()) {
           System.out.println("Is writable: " + myFile.canWrite());
           System.out.println("Is readable: " + myFile.canRead());
           System.out.println("Is a directory: " + myFile.isDirectory());
           System.out.println("myFile Size in bytes = " + myFile.length());

       }
   }
}
הפלט של התוכנית הוא:
שם הקובץ: cat.txt תיקיית אב: d:\MyDir הקובץ קיים נתיב מוחלט: d:\MyDir\cat.txt ניתן לכתיבה: true האם קריא: true האם ספריה: false myFile Size בבתים = 0
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION