يقدم JDK1.7 حزمة Java.nio.file الجديدة فئة تشغيل الملفات. هناك فئة ملفات تحتوي على العديد من الطرق المفيدة لتشغيل الملفات ، مثل التحقق مما إذا كان الملف هو ملف مخفي ، أو التحقق مما إذا كان الملف هو ملف للقراءة فقط. يمكن للمطورين أيضًا استخدام طريقة files.readallbytes (path) لقراءة الملف بأكمله في الذاكرة. تقوم هذه الطريقة بإرجاع صفيف بايت ويمكن أيضًا نقل النتيجة إلى مُنشئ السلسلة لإنشاء إخراج السلسلة. تضمن هذه الطريقة أنه عند قراءة جميع محتويات البايت للملف ، يتم إغلاق المورد بغض النظر عما إذا كان هناك استثناء IO أو أي استثناء آخر غير محدد. هذا يعني أنه بعد قراءة الملف إلى محتوى الكتلة الأخير ، ليست هناك حاجة لإغلاق الملف. لاحظ أن هذه الطريقة ليست مناسبة لقراءة الملفات الكبيرة لأنه قد لا يكون هناك مساحة ذاكرة كافية. يجب على المطورين أيضًا تحديد تشفير حرف الملف لتجنب أي استثناءات أو أخطاء تحليل.
طريقة المصدر من طريقة readallbytes (المسار):
<span style = "font-size: 32px ؛"> </span> <span style = "font-size: 18px ؛">/*** يقرأ جميع البايتات من ملف. تضمن الطريقة أن يتم إغلاق الملف * عند قراءة جميع البايتات أو إلقاء خطأ في الإدخال/الإخراج ، أو استثناء من وقت التشغيل * الآخر. * لاحظ أن هذه الطريقة مخصصة للحالات البسيطة حيث يكون من المناسب قراءة جميع البايتات في صفيف بايت. ليس مخصصًا لـ * القراءة في ملفات كبيرة. * * * param path * المسار إلى الملف * * * regurn a byte a byte يحتوي على البايتات قراءة من الملف * * throws ioException * إذا حدث خطأ I/O في القراءة من الدفق * إذا كان أكبر من 2G من الملف المطلوب ، فسيتم إدراجها @ @ @ @ @ @at at there uped uper th @exment uper th @exhip uper th @exhip uper th @exhip exhip. * throws SecurityException * في حالة الموفر الافتراضي ، ويتم تثبيت مدير الأمان * ، يتم استدعاء طريقة {link securitymanager#checkread (سلسلة) checkread} * للتحقق من الوصول إلى الملف إلى الملف. */</span> <span style = "font-size: 18px ؛"> public static byte [] ReadAllBytes (path path) يلقي ioException {try (skitablebytechannel sbc = files.newbytechannel (path) ؛ inputStream in = Channels.newInputStream (sbc)) sbc.size () ؛ إذا (الحجم> (طويل) max_buffer_size) رمي OutOfMemoryerror جديد ("حجم الصفيف المطلوب كبير جدًا") ؛ إرجاع قراءة (في ، (int) حجم) ؛ }} </span>تتم قراءة سطر واحد فقط من الملف
إدخال الحزمة ؛ استيراد java.io.ioException ؛ استيراد java.nio.file.files ؛ استيراد java.nio.file.paths ؛ الفئة العامة BufferAndChannel {public static void main (string [] args) {try {system.out.println (new string (files.readallbytes (paths.get ("c: //filechannelimpl.java"))))))) ؛ } catch (ioException e) {E.PrintStackTrace () ؛ }}}طريقة المصدر لأسلوب القراءة
القائمة الثابتة العامة <string> readalllines (مسار المسار ، charset cs) يلقي ioException {try (bufferedReader reader = newbufferedreader (path ، cs)) {list <string> result = new ArrayList <> () ؛ لـ (؛؛) {String line = reader.ReadLine () ؛ إذا (السطر == فارغ) استراحة ؛ النتيجة. add (الخط) ؛ } نتيجة الإرجاع ؛ }} إدخال الحزمة ؛ استيراد java.util.list ؛ استيراد java.io.ioException ؛ استيراد java.nio.charset.standardCharsets ؛ استيراد java.nio.file.files ؛ استيراد java.nio.file.paths ؛ الفئة العامة BufferAndChannel {public static void main (string [] args) {// إذا كان ملفًا نصيًا ، يمكنك أيضًا قراءته مثل هذا. استدعاء طريقة readalllines جرب {<span style = "White-Space: Pre"> </span> // يمكن حذف المعلمة الثانية بعد JDK1.8. الافتراضي هو قائمة ترميز UTF-8 <Tring> خطوط = files.readalllines (paths.get ("c: //filechannelimpl.java") ، standardcharsets.utf_8) ؛ StringBuilder sb = new StringBuilder () ؛ لـ (خط السلسلة: الأسطر) {sb.append (السطر+"/n") ؛ ///r/n newline} سلسلة fromfile = sb.toString () ؛ System.out.println (FromFile) ؛ } catch (ioException e) {E.PrintStackTrace () ؛ }}}كيفية استخدام تدفقات Java8:
انظر أولاً إلى تطبيق الكود المصدري
دفق ثابت عام <string> خطوط (مسار المسار) يلقي ioException {خطوط الإرجاع (المسار ، standardcharsets.utf_8) ؛ } إدخال الحزمة ؛ استيراد java.io.ioException ؛ استيراد java.nio.file.files ؛ استيراد java.nio.file.paths ؛ الفئة العامة BufferAndChannel {public static void main (string [] args) {// java8 يضيف طريقة الخطوط المحاولة {// java8 يستخدم الدفق لقراءة الملفات ، مما يجعله ملفات أكثر كفاءة. sans-serif ؛ ">" c: //filechannelimpl.java "</span>)). foreach (system.out :: println) ؛ } catch (ioException e) {E.PrintStackTrace () ؛ }}}مطلوب سطر واحد فقط لقراءة ملف وكتابة ملف.
إدخال الحزمة ؛ استيراد java.util.arrays ؛ استيراد java.util.list ؛ استيراد java.io.ioException ؛ استيراد java.nio.file.files ؛ استيراد java.nio.file.paths ؛ استيراد java.nio.file.StandardOpenOption ؛ الفئة العامة BufferAndChannel {public static void main (string [] args) {// java8 يضيف سلسلة الخطوط filepath = "c: //filechannelimpl.java" ؛ جرب {// java8 يقرأ الملفات في دفق ، وهو أكثر كفاءة/*ملفات. E.PrintStackTrace () ؛ * / /* files.ReadAlllines (مسار المسار) تقوم طريقة بإرجاع قيمة القائمة <String> ، والتي تم تصميمها للملفات. write ()* لأن files.write () تحتاج إلى تمرير في معلمة itervable <؟ يمتد charquence> type * * files.write (مسار المسار ، itervable <؟ يمتد خطوط charsevenence ، OpenOption ... خيارات) */ list <stringstream = files.readalllines (paths.get (filepath)) ؛ // لأن الملفات. الخطوط (مسار المسار) إرجاع دفق <string> ، يمكنك استخدام الطريقة التالية لتصبح قائمة <string> // LIST <TRING> stringstream2 = Arrays.Aslist ((string []) files.lines (paths.get (filePath)). tararray ()) ؛ // StandardOpenOption هو فئة التعداد. إذا لم يكن الملف حاليًا paths.get () ، فيمكن اختيار المعلمة الثالثة كـ standteropenoption.create_new // إذا كان الملف موجودًا ، رمي java.nio.file.filealReadyExistseception files.write (paths.get ("c: //2.java" ، StringStream ، stringsoption.create_new) ؛ } catch (ioException e) {E.PrintStackTrace () ؛ }}}المقالة أعلاه jdk1.7 java.nio.file.files لا تتطلب سوى سطر واحد من التعليمات البرمجية لتحقيق الملف أعلاه. هذا هو كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.