0Pricing
Java Academy · درس

أداة Files: القراءة والكتابة والنسخ والنقل

استخدم Files.readString وwriteString وcopy وmove وdelete لتنفيذ عمليات الملفات الشائعة

أداة Files: القراءة والكتابة والنسخ والنقل درس مجاني في Java Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Java Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Java Academy 4 دروس في المجموع.

الفئة Files

توفر الفئة java.nio.file.Files أساليب أدوات ثابتة لقراءة الملفات وكتابتها ونسخها ونقلها والاستعلام عنها. وهي تستبدل الشيفرة النمطية المطوّلة لـ FileInputStream/FileOutputStream.

import java.nio.file.*;
import java.io.IOException;

Path file = Path.of("example.txt");
// All Files methods throw IOException — handle or propagate

قراءة الملفات

أساليب حديثة لقراءة المحتوى الكامل لملف:

Path path = Path.of("notes.txt");

// Read as a single String (Java 11+)
String content = Files.readString(path);
System.out.println(content);

// Read as List of lines
List<String> lines = Files.readAllLines(path);
lines.forEach(System.out::println);

// Read as byte array
byte[] bytes = Files.readAllBytes(path);

كتابة الملفات

اكتب سلسلة نصية أو مجموعة من الأسطر إلى ملف باستدعاء واحد:

Path out = Path.of("output.txt");

// Write a String (overwrites by default)
Files.writeString(out, "Hello, NIO.2!");

// Write with StandardOpenOption.APPEND
Files.writeString(out, "\nAppended line", StandardOpenOption.APPEND);

// Write lines
List<String> lines = List.of("line1", "line2", "line3");
Files.write(out, lines);

التحقق من خصائص الملفات

استعلم عن البيانات الوصفية للملف من دون فتحه:

Path path = Path.of("data.txt");

System.out.println(Files.exists(path));       // true/false
System.out.println(Files.isRegularFile(path)); // true if not dir
System.out.println(Files.isDirectory(path));   // true if dir
System.out.println(Files.isReadable(path));    // readable?
System.out.println(Files.size(path));          // bytes
System.out.println(Files.getLastModifiedTime(path));

نسخ الملفات

تنسخ Files.copy(source, target) ملفًا. استخدم StandardCopyOption للتحكم في السلوك:

Path src = Path.of("original.txt");
Path dst = Path.of("backup.txt");

// Throws if destination exists (default)
Files.copy(src, dst);

// Overwrite if exists:
Files.copy(src, dst, StandardCopyOption.REPLACE_EXISTING);

// Copy preserving file timestamps:
Files.copy(src, dst, StandardCopyOption.COPY_ATTRIBUTES);

نقل الملفات وإعادة تسميتها

تنقل Files.move() ملفًا أو تعيد تسميته. ويمكن إجراء نقل ذري باستخدام ATOMIC_MOVE:

Path from = Path.of("temp.txt");
Path to   = Path.of("archive/report_2024.txt");

Files.move(from, to, StandardCopyOption.REPLACE_EXISTING);

// Rename in same directory:
Path renamed = from.resolveSibling("new_name.txt");
Files.move(from, renamed, StandardCopyOption.REPLACE_EXISTING);

حذف الملفات

يوجد أسلوبان للحذف — أحدهما يطرح استثناءً إذا لم يُعثر على الملف، والآخر لا يطرح استثناءً:

Path file = Path.of("temp.txt");

// Throws NoSuchFileException if file doesn't exist:
Files.delete(file);

// Returns false if file didn't exist (no exception):
boolean deleted = Files.deleteIfExists(file);
System.out.println("Deleted: " + deleted);

إنشاء الأدلة

أنشئ الأدلة، بما في ذلك جميع الأدلة الوسيطة:

Path dir = Path.of("output/reports/2024");

// Creates all missing intermediate directories:
Files.createDirectories(dir);

// Creates a single directory (fails if parent missing):
Files.createDirectory(Path.of("output/reports/2025"));

الملفات والأدلة المؤقتة

أنشئ ملفات مؤقتة بأمان — إذ يمكن لـ JVM تنظيفها:

// Temp file in default temp directory
Path tmp = Files.createTempFile("prefix_", ".txt");
Files.writeString(tmp, "temp data");
System.out.println(tmp); // something like /tmp/prefix_12345.txt

// Temp directory
Path tmpDir = Files.createTempDirectory("work_");
System.out.println(tmpDir);

تدفق الأسطر باستخدام Files.lines

تعيد Files.lines() دفقًا كسولًا من النوع Stream<String> — وهو أفضل من readAllLines للملفات الكبيرة لأنه لا يحمّل كل المحتوى إلى الذاكرة:

try (var stream = Files.lines(Path.of("large.log"))) {
    long errorCount = stream
        .filter(l -> l.contains("ERROR"))
        .count();
    System.out.println("Errors: " + errorCount);
} // stream (and underlying reader) closed automatically

القراءة من موارد Classpath

اجمع بين getClass().getResourceAsStream() ونسخ NIO لتحميل الموارد:

try (var in = getClass().getResourceAsStream("/config.json")) {
    Path tmp = Files.createTempFile("config", ".json");
    Files.copy(in, tmp, StandardCopyOption.REPLACE_EXISTING);
    String json = Files.readString(tmp);
    System.out.println(json);
}

تحقق سريع

ما الأسلوب الذي ينبغي استخدامه لقراءة ملف سجل كبير من دون تحميل جميع الأسطر إلى الذاكرة في الوقت نفسه؟

مراجعة: أدوات Files

أهم النقاط:

  • Files.readString/readAllLines/readAllBytes — قراءة الملف كاملًا
  • Files.writeString/write — كتابة سلسلة نصية أو أسطر
  • Files.copy/move مع StandardCopyOption — النسخ/إعادة التسمية/النقل
  • Files.delete/deleteIfExists — الحذف الآمن
  • Files.lines — دفق كسول للملفات الكبيرة (استخدم try-with-resources)

الأسئلة الشائعة

هل درس «أداة Files: القراءة والكتابة والنسخ والنقل» مجاني؟

نعم — نص درس «أداة Files: القراءة والكتابة والنسخ والنقل» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 4 دروس في المجموع.

ماذا ستتعلم في «أداة Files: القراءة والكتابة والنسخ والنقل»؟

استخدم Files.readString وwriteString وcopy وmove وdelete لتنفيذ عمليات الملفات الشائعة تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟

لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «أداة Files: القراءة والكتابة والنسخ والنقل»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟

نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. Path: تمثيل مواقع الملفات
  2. أداة Files: القراءة والكتابة والنسخ والنقل
  3. استعراض أشجار المجلدات باستخدام Files.walk
  4. WatchService: مراقبة تغييرات الملفات
← العودة إلى Java Academy