Latest web development tutorials

تيار جافا (تيار)، ملف (ملف) وIO

وتشمل حزمة الدرجة Java.io تقريبا جميع عمليات احتياجات المدخلات والمخرجات. كل من هذه الفئات لساحة تمثل مصدر الدخل وجهة الإخراج.

Java.io حزمة يتدفقون دعم مجموعة متنوعة من الأشكال، مثل: أنواع أساسية، والأشياء، ومجموعات شخصية محلية وهلم جرا.

ويمكن أن يفهم على أنه سلسلة من سيل من البيانات. يمثل تيار الإدخال قراءة البيانات من المصدر إلى دفق إخراج الهدف يمثل كتابة البيانات.

يوفر جافا دعما قويا ومرنا لI / O، مما يجعلها أكثر استخداما في نقل الملفات وبرمجة الشبكات.

ومع ذلك، يصف هذا القسم I / O وظائف ذات الصلة أبسط وتيار. وسوف نتعلم من خلال مثال لهذه الوظائف.


قراءة حدة الإدخال

وحدة جافا المدخلات الانتهاء من System.in.

من أجل الحصول على دفق طابع ملزم إلى وحدة التحكم، يمكنك System.in ملفوفة في كائن BufferedReader لخلق تيار من الأحرف.

هنا هو بناء الجملة الأساسية لإنشاء BufferedReader:

BufferedReader br = new BufferedReader(new 
                      InputStreamReader(System.in));

بعد إنشاء كائن BufferedReader، يمكننا استخدام طريقة القراءة () لقراءة حرف من وحدة التحكم، أو قراءة طريقة سلسلة ريدلاين ().


اقرأ المزيد إدخال حرف من وحدة التحكم

قراءة من كائن BufferedReader هو الحرف الذي تريد استخدامه قراءة) طريقة (، والتي لديها الجملة التالي:

int read( ) throws IOException

كل دعوة لقراءة () الأسلوب، الذي يقرأ حرف من تيار المدخلات وإرجاع طابع قيمة عددية. عندما نهاية تيار ترجع -1. طريقة يلقي IOException.

يوضح البرنامج التالي طريقة استخدام القراءة () يقرأ حرفا من وحدة وتستمر حتى دخول المستخدم "ف".

// 使用 BufferedReader 在控制台读取字符

import java.io.*;

public class BRRead {
   public static void main(String args[]) throws IOException
   {
      char c;
      // 使用 System.in 创建 BufferedReader 
      BufferedReader br = new BufferedReader(new 
                         InputStreamReader(System.in));
      System.out.println("Enter characters, 'q' to quit.");
      // 读取字符
      do {
         c = (char) br.read();
         System.out.println(c);
      } while(c != 'q');
   }
}

الأمثلة المذكورة أعلاه جمعت النتائج على النحو التالي:

Enter characters, 'q' to quit.
123abcq
1
2
3
a
b
c
q

يقرأ سلسلة من وحدة التحكم

قراءة من الإدخال القياسي يحتاج الى سلسلة لاستخدام أسلوب BufferedReader ريدلاين ().

شكلها العام هو:

String readLine( ) throws IOException

يقرأ البرنامج التالي والصفوف يعرض شخصية حتى تقوم بإدخال كلمة "النهاية".

// 使用 BufferedReader 在控制台读取字符
import java.io.*;
public class BRReadLines {
   public static void main(String args[]) throws IOException
   {
      // 使用 System.in 创建 BufferedReader 
      BufferedReader br = new BufferedReader(new
                              InputStreamReader(System.in));
      String str;
      System.out.println("Enter lines of text.");
      System.out.println("Enter 'end' to quit.");
      do {
         str = br.readLine();
         System.out.println(str);
      } while(!str.equals("end"));
   }
}

الأمثلة المذكورة أعلاه جمعت النتائج على النحو التالي:

Enter lines of text.
Enter 'end' to quit.
This is line one
This is line one
This is line two
This is line two
end
end

جدك الإصدار 5 بعد ويمكننا أيضا استخدام جافا الماسح الطبقة للحصول على وحدة الإدخال.

وحدة الإخراج

وقد تم عرضه في إخراج السابق من وحدة التحكم يتم عن طريق الطباعة () وprintln (). هذه الأساليب التي يحددها PrintStream الطبقة، System.out هو إشارة إلى كائن الفئة.

PrintStream ورثت الطبقة OutputStream، وتطبق أسلوب الكتابة (). وهكذا، الكتابة () يمكن أن تستخدم أيضا لومن يكتب وحدة التحكم.

أبسط تعريف PrintStream شكل الكتابة () هي كما يلي:

void write(int byteval)

وهذه الطريقة تقلل الثماني byteval مكتوبة إلى الدفق.

أمثلة

يستخدم المثال التالي الكتابة () حرف "A" و تليها الناتج حرف السطر إلى الشاشة:

import java.io.*;

// 演示 System.out.write().
public class WriteDemo {
   public static void main(String args[]) {
      int b; 
      b = 'A';
      System.out.write(b);
      System.out.write('\n');
   }
}

تشغيل المثال أعلاه إخراج الحرف "A" في إطار الإخراج

A

ملاحظة: لا تستخدم أسلوب الكتابة () في كثير من الأحيان بسبب طريقة الطباعة () وprintln () هو أكثر ملاءمة للاستخدام.


القراءة والكتابة الملفات

كما هو موضح أعلاه، يتم تعريف تيار باعتباره سلسلة من البيانات. تيار الإدخال لقراءة البيانات من المصدر إلى دفق إخراج هدف لكتابة البيانات.

وفيما يلي وصفا من الطبقة التسلسل الهرمي المدخلات والمخرجات المخطط تيارات.

وسيتم مناقشة ما يلي تيارين الهامة وفيلينبوتستريام وFileOutputStream:


فيلينبوتستريام

تيار لقراءة البيانات من ملف، موضوعها يمكن استخدامها لإنشاء كلمة رئيسية جديدة.

هناك عدة طرق البناء يمكن أن تستخدم لخلق الكائنات.

يمكنك استخدام اسم سلسلة ملف نوع لإنشاء كائن دفق الإدخال لقراءة الملف:

InputStream f = new FileInputStream("C:/java/hello");

يمكنك أيضا استخدام كائن ملف لإنشاء كائن تيار لقراءة ملفات الإدخال. علينا أولا أن استخدام الأسلوب الملف () لإنشاء كائن ملف:

File f = new File("C:/java/hello");
InputStream f = new FileInputStream(f);

يتم إنشاء كائن InputStream، يمكنك استخدام الطريقة التالية لقراءة تدفق تيار أو إجراء عمليات أخرى.

لا. طريقة والوصف
1 وثيقة باطلة العامة () رميات IOException { }
يغلق هذا التيار ملف الإدخال والنشرات أي موارد النظام المقترنة مع هذا التيار. يلقي IOException.
2 الفراغ محمية وضع الصيغة النهائية () رميات IOException { }
هذه طريقة مسح اتصال مع الملف. تأكد من أن لم يعد الاتصال الوثيق الطريقة المرجعية تيار مدخلات الملف الخاص به. يلقي IOException.
3 الباحث العام قراءة (الباحث ص) يلقي IOException {}
هذه الطريقة يقرأ بايت محددة من البيانات من وجوه InputStream. تقوم بإرجاع قيمة عدد صحيح. إرجاع البايت التالي من البيانات، إذا كان لديك لوضع حد لها يعود -1.
4 الباحث العام قراءة (البايت [] ص ) يلقي IOException {}
هذه الطريقة يقرأ طول بايت r.length من تيار الإدخال. إرجاع عدد وحدات البايت المقروءة. إذا كان هذا هو نهاية الملف -1 يتم إرجاعها.
5 كثافة الجمهور المتاحة () رميات IOException { }
يعود الاحتجاج الطريقة التالية على هذا التيار المدخلات دون عرقلة من قبل عدد من وحدات البايت من قراءة دفق الإدخال. بإرجاع قيمة عدد صحيح.

بالإضافة إلى InputStream، وهناك بعض تيار المدخلات الأخرى، لمزيد من التفاصيل يرجى الرجوع إلى الروابط التالية:


FileOutputStream

وتستخدم هذه الطبقة لإنشاء ملف وكتابة البيانات الملف.

* إذا كان تيار فتح ملف للإخراج، عدم وجود الملف الهدف، ثم تيار سيخلق الملف.

هناك طريقتان لإنشاء كائن منشئ FileOutputStream.

استخدام سلسلة اكتب اسم ملف لإنشاء كائن دفق إخراج:

OutputStream f = new FileOutputStream("C:/java/hello") 

يمكنك أيضا استخدام كائن ملف لخلق تيار الإخراج إلى إرسال الملفات. علينا أولا أن استخدام الأسلوب الملف () لإنشاء كائن ملف:

File f = new File("C:/java/hello");
OutputStream f = new FileOutputStream(f);

كائن خلق OutputStream كاملة، يمكنك استخدام الطريقة التالية لكتابة تدفق تيار أو إجراء عمليات أخرى.

لا. طريقة والوصف
1 وثيقة باطلة العامة () رميات IOException { }
يغلق هذا التيار ملف الإدخال والنشرات أي موارد النظام المقترنة مع هذا التيار. يلقي IOException.
2 الفراغ محمية وضع الصيغة النهائية () رميات IOException { }
هذه طريقة مسح اتصال مع الملف. تأكد من أن لم يعد الاتصال الوثيق الطريقة المرجعية تيار مدخلات الملف الخاص به. يلقي IOException.
3 العام الكتابة باطلة (الباحث ث) يلقي IOException {}
يأخذ هذه الطريقة البايت محددة مكتوبة إلى دفق إخراج.
4 الفراغ العام الكتابة (البايت [] ث )
طول البايت من w.length مجموعة محددة مكتوبة إلى OutputStream.

OutputStream بالإضافة إلى ذلك، هناك بعض دفق إخراج آخرين، لمزيد من التفاصيل يرجى الرجوع إلى الروابط التالية:

أمثلة

هنا هو دليل على أمثلة الاستخدام InputStream وOutputStream:

import java.io.*;

public class fileStreamTest{

   public static void main(String args[]){
   
   try{
      byte bWrite [] = {11,21,3,40,5};
      OutputStream os = new FileOutputStream("test.txt");
      for(int x=0; x < bWrite.length ; x++){
         os.write( bWrite[x] ); // writes the bytes
      }
      os.close();
     
      InputStream is = new FileInputStream("test.txt");
      int size = is.available();

      for(int i=0; i< size; i++){
         System.out.print((char)is.read() + "  ");
      }
      is.close();
   }catch(IOException e){
      System.out.print("Exception");
   }	
   }
}

البرنامج أعلاه يخلق TEST.TXT الملف، وعدد معين مكتوب في شكل ثنائي من الوثيقة، بينما الإخراج إلى وحدة التحكم.

لأنه مكتوب في الشفرة الثنائية أعلاه، قد تكون هناك مشوه، يمكنك استخدام الأمثلة البرمجية التالية إلى حل مشكلة القمامة:

//文件名 :fileStreamTest2.java
import java.io.*;

public class fileStreamTest2{
	public static void main(String[] args) throws IOException {
		
		File f = new File("a.txt");
		FileOutputStream fop = new FileOutputStream(f);
		// 构建FileOutputStream对象,文件不存在会自动新建
		
		OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8");
		// 构建OutputStreamWriter对象,参数可以指定编码,默认为操作系统默认编码,windows上是gbk
		
		writer.append("中文输入");
		// 写入到缓冲区
		
		writer.append("\r\n");
		//换行
		
		writer.append("English");
		// 刷新缓存冲,写入到文件,如果下面已经没有写入的内容了,直接close也会写入
		
		writer.close();
		//关闭写入流,同时会把缓冲区内容写入文件,所以上面的注释掉
		
		fop.close();
		// 关闭输出流,释放系统资源

		FileInputStream fip = new FileInputStream(f);
		// 构建FileInputStream对象
		
		InputStreamReader reader = new InputStreamReader(fip, "UTF-8");
		// 构建InputStreamReader对象,编码与写入相同

		StringBuffer sb = new StringBuffer();
		while (reader.ready()) {
			sb.append((char) reader.read());
			// 转成char加到StringBuffer对象中
		}
		System.out.println(sb.toString());
		reader.close();
		// 关闭读取流
		
		fip.close();
		// 关闭输入流,释放系统资源

	}
}

ملفات و I / O

هناك أيضا دروس في ملف وI / O، نحن أيضا بحاجة إلى معرفة:


الدليل جافا

إنشاء الدليل:

الملف فئة لديها طريقتين يمكن استخدامها لإنشاء مجلد:

  • MKDIR () طريقة لإنشاء مجلد، والنجاح، يعود صحيحا، فشل فإنها ترجع كاذبة. أظهر فشل كائن ملف المسار المحدد مسبقا، أو بسبب عدم وجود مسار كامل، لا يمكن إنشاء مجلد.
  • طريقة mkdirs () لإنشاء مجلد وكل مجلد الأم.

المثال التالي بإنشاء مجلد "/ تمة / المستخدم / جافا / بن":

import java.io.File;

public class CreateDir {
   public static void main(String args[]) {
      String dirname = "/tmp/user/java/bin";
      File d = new File(dirname);
      // 现在创建目录
      d.mkdirs();
  }
}

تجميع وتنفيذ التعليمات البرمجية أعلاه لإنشاء الدليل "/ تمة / المستخدم / جافا / بن".

ملاحظة: جافا على UNIX و Windows تلقائيا وفقا للفصل مسار ملف حل متفق عليه. إذا كنت تستخدم فاصل في نسخة ويندوز من جاوة، (/)، المسار لا يزال يتعين حلها بشكل صحيح.


دليل قراءة

والدليل هو في الواقع الكائن الملف الذي يحتوي على ملفات ومجلدات أخرى.

إذا قمت بإنشاء كائن الملف وأنه هو الدليل، بإرجاع الأسلوب ثم isDirectory المكالمة () صحيح.

عن طريق الاتصال على طريقة قائمة الكائنات () لاستخراج قائمة من الملفات والمجلدات التي يحتوي عليها.

يوضح المثال التالي كيفية استخدام الأسلوب القائمة () للتحقق من محتويات ملف الواردة في المجلد:

import java.io.File;

public class DirList {
   public static void main(String args[]) {
      String dirname = "/tmp";
      File f1 = new File(dirname);
      if (f1.isDirectory()) {
         System.out.println( "Directory of " + dirname);
         String s[] = f1.list();
         for (int i=0; i < s.length; i++) {
            File f = new File(dirname + "/" + s[i]);
            if (f.isDirectory()) {
               System.out.println(s[i] + " is a directory");
            } else {
               System.out.println(s[i] + " is a file");
            }
         }
      } else {
         System.out.println(dirname + " is not a directory");
    }
  }
}

الأمثلة المذكورة أعلاه جمعت النتائج على النحو التالي:

Directory of /tmp
bin is a directory
lib is a directory
demo is a directory
test.txt is a file
README is a file
index.html is a file
include is a directory