หลายวิธีในการอ่านไฟล์ใน java 1. อ่านเนื้อหาไฟล์ได้หลายวิธี
1. อ่านเนื้อหาไฟล์เป็นไบต์
2. อ่านเนื้อหาไฟล์ตามตัวอักษร
3. อ่านเนื้อหาไฟล์ทีละบรรทัด
4. สุ่มอ่านเนื้อหาไฟล์
-
นำเข้า java.io.BufferedReader;
นำเข้า java.io.File;
นำเข้า java.io.FileInputStream;
นำเข้า java.io.FileReader;
นำเข้า java.io.IOException;
นำเข้า java.io.InputStream;
นำเข้า java.io.InputStreamReader;
นำเข้า java.io.RandomAccessFile;
นำเข้า java.io.Reader;
ReadFromFile คลาสสาธารณะ {
-
* อ่านไฟล์เป็นไบต์ มักใช้ในการอ่านไฟล์ไบนารี่ เช่น รูปภาพ เสียง รูปภาพ ฯลฯ
* @param fileName ชื่อของไฟล์
-
โมฆะคงที่สาธารณะ readFileBytes (ชื่อไฟล์สตริง) {
ไฟล์ไฟล์ = ไฟล์ใหม่ (ชื่อไฟล์);
อินพุตสตรีมใน = null;
พยายาม {
System.out.println("อ่านเนื้อหาไฟล์เป็นไบต์ ทีละไบต์:");
//อ่านทีละไบต์
ใน = FileInputStream ใหม่ (ไฟล์);
int ชั่วคราว;
ในขณะที่((tempbyte=in.read()) != -1){
System.out.write (ชั่วคราว);
-
ใน.ปิด();
} จับ (IOException จ) {
e.printStackTrace();
กลับ;
-
พยายาม {
System.out.println("อ่านเนื้อหาไฟล์เป็นไบต์, หลายไบต์ในแต่ละครั้ง:");
//อ่านหลายไบต์พร้อมกัน
ไบต์ [] tempbytes = ไบต์ใหม่ [100];
int byteread = 0;
ใน = FileInputStream ใหม่ (ชื่อไฟล์);
ReadFromFile.showAvailableBytes(ใน);
//อ่านหลายไบต์ลงในอาร์เรย์ไบต์ byteread คือจำนวนไบต์ที่อ่านได้ในคราวเดียว
ในขณะที่ ((byteread = in.read(tempbytes)) != -1){
System.out.write (tempbytes, 0, byteread);
-
} จับ (ข้อยกเว้น e1) {
e1.printStackTrace();
} ในที่สุด {
ถ้า (ใน != null){
พยายาม {
ใน.ปิด();
} จับ (IOException e1) {
-
-
-
-
-
* อ่านไฟล์เป็นหน่วยตัวอักษร มักใช้อ่านข้อความ ตัวเลข และไฟล์ประเภทอื่นๆ
* ชื่อไฟล์ @param ชื่อไฟล์
-
โมฆะสาธารณะคง readFileByChars (ชื่อไฟล์สตริง) {
ไฟล์ไฟล์ = ไฟล์ใหม่ (ชื่อไฟล์);
เครื่องอ่าน เครื่องอ่าน = null;
พยายาม {
System.out.println("อ่านเนื้อหาไฟล์เป็นหน่วยอักขระ ทีละไบต์:");
//อ่านทีละตัวอักษร
reader = InputStreamReader ใหม่ (FileInputStream ใหม่ (ไฟล์));
อินท์เทมชาร์;
ในขณะที่ ((tempchar = reader.read()) != -1){
//สำหรับ Windows เมื่ออักขระทั้งสอง rn อยู่ด้วยกัน จะเป็นการขึ้นบรรทัดใหม่
//แต่ถ้าทั้งสองตัวอักษรแสดงแยกกัน บรรทัดจะเปลี่ยนสองครั้ง
// ดังนั้น โล่ r หรือโล่ n ไม่เช่นนั้นจะมีบรรทัดว่างมากมาย
ถ้า (((ถ่าน)tempchar) != 'r'){
System.out.print((ถ่าน)tempchar);
-
-
reader.ปิด();
} จับ (ข้อยกเว้นจ) {
e.printStackTrace();
-
พยายาม {
System.out.println("อ่านเนื้อหาไฟล์เป็นหน่วยอักขระ ครั้งละหลายไบต์:");
//อ่านหลายตัวอักษรพร้อมกัน
ถ่าน [] tempchars = ถ่านใหม่ [30];
int charread = 0;
reader = ใหม่ InputStreamReader (FileInputStream ใหม่ (ชื่อไฟล์));
//อ่านอักขระหลายตัวลงในอาร์เรย์อักขระ charread คือจำนวนอักขระที่อ่านในแต่ละครั้ง
ในขณะที่ ((charread = reader.read(tempchars))!=-1){
// ในทำนองเดียวกันป้องกัน r จากการแสดง
ถ้า ((charread == tempchars.length)&&(tempchars[tempchars.length-1] != 'r')){
System.out.print (เทมเพลต);
}อื่น{
สำหรับ (int i=0; i<charread; i++){
ถ้า(tempchars[i] == 'r'){
ดำเนินการต่อ;
}อื่น{
System.out.print(tempchars[i]);
-
-
-
-
} จับ (ข้อยกเว้น e1) {
e1.printStackTrace();
}ในที่สุด {
ถ้า (ผู้อ่าน != null){
พยายาม {
reader.ปิด();
} จับ (IOException e1) {
-
-
-
-
-
* อ่านไฟล์ในหน่วยบรรทัด มักใช้เพื่ออ่านไฟล์ที่จัดรูปแบบเป็นบรรทัด
* ชื่อไฟล์ @param ชื่อไฟล์
-
โมฆะคงสาธารณะ readFileByLines (ชื่อไฟล์สตริง) {
ไฟล์ไฟล์ = ไฟล์ใหม่ (ชื่อไฟล์);
เครื่องอ่าน BufferedReader = null;
พยายาม {
System.out.println("อ่านเนื้อหาไฟล์เป็นหน่วยบรรทัด อ่านทีละบรรทัด:");
reader = ใหม่ BufferedReader (FileReader ใหม่ (ไฟล์));
สตริง tempString = null;
เส้น int = 1;
//อ่านทีละบรรทัดจนกระทั่งอ่านค่า null เป็นจุดสิ้นสุดของไฟล์
ในขณะที่ ((tempString = reader.readLine()) != null){
//แสดงหมายเลขบรรทัด
System.out.println("line " + line + ": " + tempString);
เส้น++;
-
reader.ปิด();
} จับ (IOException จ) {
e.printStackTrace();
} ในที่สุด {
ถ้า (ผู้อ่าน != null){
พยายาม {
reader.ปิด();
} จับ (IOException e1) {
-
-
-
-
-
* สุ่มอ่านเนื้อหาไฟล์
* ชื่อไฟล์ @param ชื่อไฟล์
-
โมฆะคงที่สาธารณะ readFileByRandomAccess (ชื่อไฟล์สตริง) {
RandomAccessFile RandomFile = null;
พยายาม {
System.out.println("อ่านเนื้อหาไฟล์แบบสุ่ม:");
// เปิดสตรีมไฟล์การเข้าถึงแบบสุ่มในโหมดอ่านอย่างเดียว
RandomFile = new RandomAccessFile(ชื่อไฟล์, "r");
//ความยาวไฟล์,จำนวนไบต์
fileLength ยาว = RandomFile.length();
//อ่านตำแหน่งเริ่มต้นของไฟล์
int startIndex = (ความยาวไฟล์ > 4) ? 4 : 0;
//ย้ายตำแหน่งเริ่มต้นของไฟล์ที่อ่านไปยังตำแหน่ง beginningIndex
RandomFile.seek(beginIndex);
ไบต์ [] ไบต์ = ไบต์ใหม่ [10];
int byteread = 0;
//อ่านครั้งละ 10 ไบต์ หากเนื้อหาไฟล์น้อยกว่า 10 ไบต์ ให้อ่านไบต์ที่เหลือ
//กำหนดจำนวนไบต์ที่อ่านต่อครั้งเพื่อ byteread
ในขณะที่ ((byteread = RandomFile.read(bytes)) != -1){
System.out.write (ไบต์, 0, ไบต์อ่าน);
-
} จับ (IOException e){
e.printStackTrace();
} ในที่สุด {
ถ้า (ไฟล์สุ่ม!= null){
พยายาม {
RandomFile.close();
} จับ (IOException e1) {
-
-
-
-
-
* แสดงจำนวนไบต์ที่เหลืออยู่ในสตรีมอินพุต
* @param อิน
-
โมฆะคงที่ส่วนตัว showAvailableBytes (InputStream ใน) {
พยายาม {
System.out.println("จำนวนไบต์ในสตรีมอินพุตไบต์ปัจจุบันคือ:" + in.available());
} จับ (IOException จ) {
e.printStackTrace();
-
-
โมฆะคงที่สาธารณะ main (String [] args) {
ชื่อไฟล์สตริง = "C:/temp/newTemp.txt";
ReadFromFile.readFileBytes(ชื่อไฟล์);
ReadFromFile.readFileByChars (ชื่อไฟล์);
ReadFromFile.readFileByLines(ชื่อไฟล์);
ReadFromFile.readFileByRandomAccess(ชื่อไฟล์);
-
-
2. ผนวกเนื้อหาต่อท้ายไฟล์
นำเข้า java.io.FileWriter;
นำเข้า java.io.IOException;
นำเข้า java.io.RandomAccessFile;
-
* เพิ่มเนื้อหาต่อท้ายไฟล์
-
คลาสสาธารณะ AppendToFile {
-
*วิธีการต่อท้ายไฟล์: ใช้ RandomAccessFile
* ชื่อไฟล์ @param ชื่อไฟล์
* เนื้อหา @param เนื้อหาเพิ่มเติม
-
โมฆะคงสาธารณะ appendMethodA (ชื่อไฟล์ String,
เนื้อหาสตริง){
พยายาม {
// เปิดสตรีมไฟล์การเข้าถึงแบบสุ่มในโหมดอ่านและเขียน
RandomAccessFile RandomFile = new RandomAccessFile(ชื่อไฟล์, "rw");
//ความยาวไฟล์,จำนวนไบต์
fileLength ยาว = RandomFile.length();
//ย้ายตัวชี้ไฟล์การเขียนไปที่ส่วนท้ายของไฟล์
RandomFile.seek (ความยาวไฟล์);
RandomFile.writeBytes(เนื้อหา);
RandomFile.close();
} จับ (IOException e){
e.printStackTrace();
-
-
-
* วิธี B เพื่อต่อท้ายไฟล์: ใช้ FileWriter
* @param ชื่อไฟล์
* เนื้อหา @param
-
โมฆะคงสาธารณะ appendMethodB (ชื่อไฟล์สตริง เนื้อหาสตริง){
พยายาม {
//เปิดตัวเขียนไฟล์ พารามิเตอร์ตัวที่สองเป็นจริงในตัวสร้างหมายถึงการเขียนไฟล์ในรูปแบบต่อท้าย
ผู้เขียน FileWriter = FileWriter ใหม่ (ชื่อไฟล์, จริง);
นักเขียน. เขียน (เนื้อหา);
นักเขียน.ปิด();
} จับ (IOException จ) {
e.printStackTrace();
-
-
โมฆะคงที่สาธารณะ main (String [] args) {
ชื่อไฟล์สตริง = "C:/temp/newTemp.txt";
เนื้อหาสตริง = "ต่อท้ายใหม่!";
//ผนวกไฟล์ตามวิธี A
AppendToFile.appendMethodA (ชื่อไฟล์ เนื้อหา);
AppendToFile.appendMethodA(ชื่อไฟล์, "ต่อท้าย n");
//แสดงเนื้อหาไฟล์
ReadFromFile.readFileByLines(ชื่อไฟล์);
//ผนวกไฟล์ตามวิธี B
AppendToFile.appendMethodB (ชื่อไฟล์ เนื้อหา);
AppendToFile.appendMethodB(ชื่อไฟล์, "ต่อท้าย n");
//แสดงเนื้อหาไฟล์
ReadFromFile.readFileByLines(ชื่อไฟล์);
-
-