Latest web development tutorials
×

Java หลักสูตร

Java หลักสูตร Java แนะนำโดยย่อ Java การกำหนดค่าการพัฒนาสภาพแวดล้อม Java พื้นฐานไวยากรณ์ Java วัตถุและการเรียน Java ชนิดข้อมูลพื้นฐาน Java ประเภทตัวแปร Java การปรับเปลี่ยน Java ผู้ประกอบการ Java โครงสร้างห่วง Java สาขาโครงสร้าง Java Number หมวดหมู่ Java Character หมวดหมู่ Java String หมวดหมู่ Java StringBuffer Java แถว Java วันที่เวลา Java นิพจน์ปกติ Java ทาง Java Stream,File,IO Java Scanner หมวดหมู่ Java การจัดการข้อยกเว้น

Java เชิงวัตถุ

Java สืบทอด Java Override/Overload Java polymorphism Java ระดับนามธรรม Java บรรจุภัณฑ์ Java อินเตอร์เฟซ Java บรรจุภัณฑ์

Java การสอนที่ทันสมัย

Java โครงสร้างข้อมูล Java คอลเลกชันกรอบ Java ยาชื่อสามัญ Java การทำให้เป็นอันดับ Java เขียนโปรแกรมเครือข่าย Java ส่ง Email Java การเขียนโปรแกรมแบบมัลติเธรด Java Appletรากฐาน Java เอกสารความคิดเห็น Java ตัวอย่าง Java 8 คุณสมบัติใหม่ Java MySQL สัมพันธ์

Java สตรีม (สตรีม) ไฟล์ (File) และ IO

แพคเกจระดับ Java.io รวมถึงการดำเนินงานเกือบทั้งหมดของอินพุตและเอาต์พุตความต้องการ ทุกชั้นเรียนกระแสเหล่านี้เป็นตัวแทนแหล่งนำเข้าและปลายทางออก

แพคเกจ Java.io สตรีมมิ่งสนับสนุนความหลากหลายของรูปแบบเช่น: ประเภทพื้นฐานวัตถุที่มีการแปลชุดตัวอักษรและอื่น ๆ

มันสามารถเข้าใจได้เป็นลำดับของกระแสของข้อมูลได้ แสดงให้เห็นถึงกระแสการป้อนข้อมูลเพื่ออ่านข้อมูลจากต้นทางไปยังกระแสออกเป้าหมายหมายถึงการเขียนข้อมูล

Java ให้การสนับสนุนที่มีประสิทธิภาพและมีความยืดหยุ่นสำหรับ I / O ที่ทำให้มันใช้กันอย่างแพร่หลายมากขึ้นในการถ่ายโอนไฟล์และการเขียนโปรแกรมเครือข่าย

แต่ส่วนนี้จะอธิบายขั้นพื้นฐานที่สุดและสตรีม I / O ฟังก์ชั่นที่เกี่ยวข้อง เราจะได้เรียนรู้ผ่านตัวอย่างให้กับฟังก์ชั่นเหล่านี้


อ่านเข้าคอนโซล

การป้อนข้อมูล Java คอนโซลเสร็จสมบูรณ์โดย System.in

เพื่อให้ได้กระแสตัวละครที่มีผลผูกพันไปยังคอนโซลคุณสามารถ System.in ห่อวัตถุ BufferedReader เพื่อสร้างกระแสของตัวอักษร

นี่คือไวยากรณ์พื้นฐานในการสร้าง BufferedReader A:

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

หลังจากวัตถุ BufferedReader ถูกสร้างขึ้นเราสามารถใช้อ่าน () วิธีการอ่านตัวอักษรจากคอนโซลหรืออ่าน readLine สตริง () วิธีการ


อ่านป้อนตัวอักษรเพิ่มเติมจากคอนโซล

อ่านจากวัตถุ BufferedReader เป็นตัวละครที่คุณต้องการที่จะใช้อ่าน () วิธีการซึ่งมีไวยากรณ์ต่อไปนี้:

int read( ) throws IOException

แต่ละสายการอ่าน () วิธีการที่อ่านตัวอักษรจากกระแสการป้อนข้อมูลและส่งกลับตัวอักษรที่เป็นค่าจำนวนเต็ม เมื่อสิ้นสุดของกระแสกลับ -1 วิธีการพ่น IOException

โปรแกรมต่อไปนี้แสดงให้เห็นถึงการใช้อ่าน () วิธีการอ่านตัวอักษรจากคอนโซลต่อไปจนกว่าผู้ใช้ป้อน "Q"

// 使用 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 readLine () วิธีการ

รูปแบบทั่วไปของมันคือ:

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

รุ่น JDK 5 หลังจากที่เรายังสามารถใช้ Java สแกนเนอร์ ระดับที่จะได้รับการป้อนข้อมูลคอนโซล

แสดงผลที่คอนโซล

มันได้รับการแนะนำในการส่งออกก่อนหน้านี้ของคอนโซลจะกระทำโดยการพิมพ์ () และ println () วิธีการเหล่านี้กำหนดโดย PrintStream ชั้น System.out คือการอ้างอิงไปยังวัตถุชั้นเรียน

PrintStream สืบทอดมาชั้น OutputStream และใช้วิธีการเขียน () ดังนั้นการเขียน () นอกจากนี้ยังสามารถนำไปใช้และจากคอนโซลการเขียน

ความหมายที่ง่ายที่สุดของรูปแบบการเขียน PrintStream () มีรายละเอียดดังนี้

void write(int byteval)

วิธีการนี้จะลด octet byteval เขียนไปยังกระแส

ตัวอย่าง

ตัวอย่างต่อไปนี้ใช้เขียน () ตัวอักษร "A" และตามมาด้วยการส่งออกอักขระ newline ไปยังหน้าจอ:

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

หมายเหตุ: การเขียน () วิธีการที่ไม่ได้ใช้มักจะเป็นเพราะการพิมพ์ () และ println () วิธีการมีความสะดวกมากขึ้นในการใช้


การอ่านและการเขียนไฟล์

ตามที่อธิบายไว้ข้างต้นเป็นกระแสที่ถูกกำหนดให้เป็นลำดับของข้อมูล สตรีมใส่สำหรับการอ่านข้อมูลจากต้นทางไปยังกระแสออกเป้าหมายสำหรับการเขียนข้อมูล

ต่อไปนี้เป็นคำอธิบายของลำดับชั้นแผนภาพเข้าและส่งออกของลำธาร

ต่อไปนี้จะมีการหารือสองสายสำคัญ FileInputStream และ FileOutputStream:


FileInputStream

กระแสสำหรับการอ่านข้อมูลจากแฟ้มวัตถุที่สามารถนำมาใช้เพื่อสร้างคำหลักใหม่

มีวิธีการก่อสร้างหลายสามารถนำมาใช้ในการสร้างวัตถุ

คุณสามารถใช้ชื่อสตริงประเภทของไฟล์ที่จะสร้างวัตถุสตรีมใส่อ่านไฟล์:

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 int สาธารณะอ่าน (int R) พ่น IOException {}
วิธีการนี้อ่านไบต์ระบุข้อมูลจากวัตถุ InputStream ก็จะส่งกลับค่าจำนวนเต็ม ส่งกลับไบต์ต่อไปของข้อมูลถ้าคุณต้องจบมันกลับ -1
4 int สาธารณะอ่าน (byte [] R ) พ่น IOException {}
วิธีการนี้จะอ่านยาวไบต์ r.length จากสตรีมใส่ ส่งกลับจำนวนไบต์ที่อ่าน ถ้ามันเป็นจุดสิ้นสุดของไฟล์ที่ถูกส่งกลับ -1
5 int สาธารณะที่มีอยู่ () พ่น 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 โมฆะสาธารณะเขียน (int W) พ่น IOException {}
วิธีนี้ใช้เวลาไบต์ที่ระบุเป็นลายลักษณ์อักษรไปยังกระแสเอาท์พุท
4 โมฆะสาธารณะเขียน (byte [] W )
ความยาว byte ของ 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 เรายังจำเป็นต้องรู้:


ไดเรกทอรี Java

สร้างไดเรกทอรี:

คลาแฟ้มมีสองวิธีที่สามารถใช้ในการสร้างโฟลเดอร์:

  • mkdir () วิธีการสร้างโฟลเดอร์ให้สำเร็จผลตอบแทนจริงล้มเหลวก็จะส่งกลับเท็จ วัตถุที่แสดงให้เห็นความล้มเหลวของไฟล์เส้นทางที่ระบุอยู่แล้วหรือเพราะเส้นทางทั้งหมดไม่ได้อยู่ที่โฟลเดอร์ไม่สามารถสร้าง
  • mkdirs () วิธีการสร้างโฟลเดอร์และทั้งหมดของโฟลเดอร์แม่

ตัวอย่างต่อไปนี้สร้างโฟลเดอร์ "/ tmp / ผู้ใช้ / Java / bin":

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();
  }
}

คอมไพล์และรันโค้ดข้างต้นเพื่อสร้างไดเรกทอรี "/ tmp / ผู้ใช้ / Java / bin"

หมายเหตุ: Java บน UNIX และ Windows โดยอัตโนมัติตามมติตกลงที่คั่นเส้นทางของแฟ้ม ถ้าคุณใช้ตัวคั่นใน Windows รุ่นของ Java (/) เส้นทางที่ยังคงได้รับการแก้ไขอย่างถูกต้อง


ไดเรกทอรีอ่าน

ไดเรกทอรีเป็นจริงวัตถุไฟล์ที่มีไฟล์และโฟลเดอร์อื่น ๆ

ถ้าคุณสร้างวัตถุไฟล์และมันเป็นไดเรกทอรีแล้ว 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