1. Trang chủ
  2. » Công Nghệ Thông Tin

Lap Trinh java bai giang chuong 5

31 480 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 31
Dung lượng 544,58 KB

Nội dung

Lập trình cơ bản với Java Tác giả: PGS.TS Trần Văn Lăng, Ths. Chu Nguyên Hoàng Minh Giúp các bạn tiếp cần gần hơn với bộ môn lập trình để trở thành một Lập trình viên suất sắc Lập trình cơ bản với Java Tác giả: PGS.TS Trần Văn Lăng, Ths. Chu Nguyên Hoàng Minh Giúp các bạn tiếp cần gần hơn với bộ môn lập trình để trở thành một Lập trình viên suất sắc

Môn học: Lập trình với Java Chương V: Truy cập liệu từ thiết bị lưu trữ Th Mục đính – Yêu cầu: Sau học xong sinh viên nắm được:  Thư viện lớp luồng java: luồng byte, luồng ký tự  Xuất nhập Console dùng luồng byte, luồng ký tự  Xuất nhập files dùng luồng ký tự luồng byte  Vấn đề xử lý files truy cập ngẫu nhiên dùng lớp RandomAccessFile  Xử lý file thư mục dùng lớp File Số tiết lên lớp: Bảng phân chia thời lượng: Stt 01 Nội dung Thư viện lớ l ồng 02 ất nhậ C n le 03 ất nhậ file 04 Số tiết ng l ồng ý tự l ồng lý file thư mụ ng lớ te ile Trọng tâm giảng:  Thư viện lớp luồng java: luồng byte, luồng ký tự  Xuất nhập Console dùng luồng byte, luồng ký tự  Xuất nhập files dùng luồng ký tự luồng byte  Vấn đề xử lý files truy cập ngẫu nhiên dùng lớp RandomAccessFile  Xử lý file thư mục dùng lớp File 211 5.1 Mở đầu Việ lư trữ liệu biến hương trình, mảng có tính chất tạm thời liệu hi iến khỏi tầm ảnh hưởng hoặ ile giú h hi hương trình ết thúc hương trình ó thể lư trữ lượng lớn liệ , ũng ó thể lư trữ liệu thời gian dài hi hương trình ết thú Tr ng hương nà tìm hiểu làm nà hương trình java ó thể tạ , đọc, ghi xử lý files file truy cập ngẫu nhiên thông qua số ví dụ minh họa Xử lý files vấn đề hết sứ trình nà ản, quan trọng mà ngôn ngữ lập ũng hải hỗ trợ thư viện, hàm để xử lý số tha t ản kiểu liệu file Xử lý files phần công việc xử lý luồng, giúp cho hương trình đọc, ghi liệu nhớ, file tra đổ liệu thông qua kết nối mạng Chương nà ẽ cung cấp cho kiến thứ ản luồng (streams) files:  Thư viện lớp luồng java: luồng byte, luồng ký tự  Xuất nhập Console dùng luồng byte, luồng ký tự  Xuất nhập files dùng luồng ký tự luồng byte  Vấn đề xử lý files truy cập ngẫu nhiên dùng lớp RandomAccessFile  Xử lý file thư mục dùng lớp File 5.2 Luồng (Streams) ([2] trang 551) 5.2.1 Khái niệm luồng Tất hoạt động nhập/xuất liệu (nhập liệu từ bàn phím, lấy liệu từ mạng về, ghi liệ đĩa, x ất liệ hình, m in, …) đề quy khái niệm gọi luồng (stream) Luồng nơi ó thể “ ản xuất” “tiê thụ” thông tin Luồng thường hệ thống xuất nhập java gắn kết với thiết bị vật lý Tất luồng có chung nguyên tắc hoạt động hi húng gắn kết với thiết bị vật lý khác Vì lớ , hương thức xuất nhập dùng chung cho thiết bị vật lý khác Chẳng hạn hương thức 212 ng để ghi liệ n le, đồng thời ũng ó thể ng để ghi liệu xuống file đĩa Java thực luồng tập hợp lớp phân cấp gói java.io Java định nghĩa hai iểu luồng: byte ký tự (phiên gốc định nghĩa iểu luồng te, a l ồng ký tự thêm vào phiên sau) Luồng byte (hay luồng dựa byte) hỗ trợ việc xuất nhập liệ đượ te, thường ng hi đọc ghi liệu nhị phân Luồng ký tự thiết kế hỗ trợ việc xuất nhập liệu kiểu ký tự (Unicode) Trong vài trường hợp luồng ký tự sử dụng hiệu l ồng te, mức hệ thống tất xuất nhậ phải qui byte Luồng ký tự hỗ trợ hiệu việc quản lý, xử lý ký tự 5.2.2 Luồng byte (Byte Streams) Các luồng te đượ định nghĩa trừ tượng In tStream O t ng hai lớp phân cấp Mức hai lớp tStream In tStream định nghĩa đặ điểm chung cho luồng nhập byte OutputStream mô tả cách xử lý luồng xuất byte Các lớp dẫn xuất từ hai lớp InputStream OutputStream hỗ trợ chi tiết tương ứng với việ đọc ghi liệu thiết bị h hàng loạt nhiều lớ thành thạo luồng h nha Đừng choáng ngợp với nha Đừng lo lắng, bạn nắm vững, sử dụng te nà ạn dễ dàng làm việc với luồng lại luồn t BufferedInputStream n h Buffered input stream BufferedOutputStream Buffered output stream Input stream đọc liệu từ mảng ByteArrayInputStream Byte Output stream ghi liệu đến mảng ByteArrayOutputStream Byte Luồng nhập có phương thức đọc DataInputStream kiểu liệu chuẩn java Luồng xuất có phương thức ghi DataOutputStream kiểu liệu chuẩn java 213 FileInputStream Luồng nhập cho phép đọc liệu từ file Luồng xuất cho phép ghi liệu xuống FileOutputStream file FilterInputStream Hiện thực lớp trừu tượng InputStream FilterOutputStream Hiện thực lớp trừu tượng OutputStream Lớp trừu tượng, lớp cha tất InputStream lớp luồng nhập kiểu Byte Lớp trừu tượng, lớp cha tất OutputStream PipedInputStream lớp xuất nhập kiểu Byte Luồng nhập byte kiểu ống (piped) thường phải gắn với luồng xuất kiểu ống Luồng nhập byte kiểu ống (piped) PipedOutputStream PrintStream thường phải gắn với luồng nhập kiểu ống để tạo nên kết nối trao đổi liệu kiểu ống Luồng xuất có chứa hương thức print() println() Là luồng nhập kiểu Byte mà hỗ trợ PushbackInputStream RandomAccessFile thao tác trả lại (push back) phục hồi tha t đọc byte (unread) Hỗ trợ tha t đọ , ghi file truy cập ngẫu nhiên SequenceInputStream Là luồng nhậ tạo nên cách nối kết logic luồng nhập khác 5.2.3 Luồng ký tự( Character Streams) Các luồng ký tự đượ định nghĩa ng hai lớp phân cấp Mức hai lớp trừ tượng Reader Writer Lớp Reader dùng cho việc nhập liệu luồng, lớp 214 Writer dùng cho việc xuất liệu cua luồng Những lớp dẫn xuất từ Reader Writer thao tác luồng ký tự Unicode Lớp luồn tự BufferedReader Ýn h Luồng nhập ký tự đọc liệu vào vùng đệm BufferedWriter Luồng xuất ký tự ghi liệu tới vùngđệm CharArrayReader Luồng nhập đọc liệu từ mảng ký tự CharArrayWriter Luồng xuất ghi liệu tời mảng ký tự FileReader Luồng nhập ký tự đọc liệu từ file FileWriter Luồng xuất ký tự ghi liệ đến file FilterReader Lớ đọc liệu trung gian (lớp trừ tượng) FilterWriter Lớp xuất trung gian trừ tượng InputStreamReader Luồng nhập chuyển bytes thành ký tự LineNumberReader Luồng nhậ đếm dòng OutputStreamWriter Luồng xuất chuyển ký tự thành bytes PipedReader Luồng đọc liệu hế đường ống PipedWriter Luồng ghi liệu hế đường ống PrintWriter Luồng ghi văn ản thiết bị xuất (chứa hương thức print() println() ) 215 PushbackReader Luồng nhậ h đọc khôi phục lại liệu Reader Lớp nhập liệu trừ tượng StringReader Luồng nhậ đọc liệu từ chuỗi StringWriter Luồng xuất ghi liệu chuỗi Writer Lớp ghi liệu trừ tượng 5.2.4 Những luồn định n h Tất trước (The PredefinedStreams) hương trình viết java tự động import gói java.lang Gói có định nghĩa lớp System, bao gồm số đặ điểm môi trường run-time, có ba biến luồng đượ định nghĩa trước in, out err, biến nà fiel khai báo static lớp System  System.out: luồng xuất chuẩn, mặ định console  System.out đối tượng kiểu PrintStream  System.in: luồng nhập chuẩn, mặ định bàn phím  System.in đối tượng kiểu InputStream  System.err: luồng lỗi chuẩn, mặ định ũng  S tem n le t ũng đối tượng kiểu PrintStream giống System.out 5.3 Sử dụng luồng Byte Như húng ta iết hai lớp InputStream OutputStream hai siêu lớ ( ha) tất lớp luồng xuất nhập kiểu byte Những hương thức hai siêu lớp ném lỗi kiểu IOException Những hương thứ định nghĩa tr ng hai iê lớp dùng lớp chúng Vì tậ hương thứ tập tối tiểu nhập xuất mà luồng nhập xuất kiểu byte sử dụng Những hương thứ định nghĩa tr ng lớp InputStream OutputStream 216 Phương thức Ý ngh a InputStream int available( ) Trả số luợng bytes đọc từ luồng nhập void close( ) Đóng luồng nhập giải phóng tài nguyên hệ thống gắn với luồng Không thành công ném lỗi IOException void mark(int numBytes) Đ nh dấu vị trí luồng nhập boolean markSupported( ) Kiểm tra xem luồng nhập có hỗ trợ phương thức mark() reset() không int read( ) Đọc byte từ luồng nhập int read(byte buffer[ ]) Đọ ffer.length te lư tr ng vùng nhớ buffer Kết trả số bytes thật đọ Đọc numBytes bytes địa int read(byte buffer[ ], int ff et lư tr ng v ng nhớ buffer offset, int numBytes) Kết trả số bytes thật đọ void reset( ) Nhảy trỏ đến vị trí đượ x định việc gọi hàm mark() lần sau long skip(long numBytes) Nhảy qua numBytes liệu từ luồng nhập void close( ) OutputStream Đóng luồng xuất giải phóng tài nguyên hệ thống gắn với luồng Không thành công ném lỗi IOException void flush( ) Ép liệu từ đệm phải ghi xuống luồng (nếu có) void write(int b) Ghi byte liệu định xuống luồng void write(byte buffer[ ]) Ghi buffer.length bytes liệu từ mảng định xuống luồng 217 void write(byte buffer[ ], Ghi numBytes bytes liệu từ vị trí offset mảng định buffer xuống int offset, luồng int numBytes) 5.3.1 Đọc liệu từ Console Trướ đâ , hi Java đời để thực việc nhập liệu từ C n le người ta dùng luồng nhập byte Về sau dùng luồng byte luồng ký tự, tr ng số trường hợp thực tế để đọc liệu từ C n le người ta thích dùng luồng kiểu ký tự hơn, lý đơn giản dễ bả trì hương trình Ở đâ với mụ đí h minh họa dùng luồng byte thực việc nhập xuất Console Ví dụ: hương trình minh họa việ đọc mảng bytes từ System.in import java.io.*; class ReadBytes{ public static void main(String args[])throws IOException{ byte data[] = new byte[100]; System.out.print("Enter some characters."); System.in.read(data); System.out.print("You entered: "); for(int i=0; i < data.length; i++) System.out.print((char) data[i]); } } Kết thực thi chươn trình: 5.3.2 Xuất liệu Console Tương tự nhập liệu từ Console, với phiên java để xuất liệu Console tả sử dụng luồng byte Kể từ phiên 1.1 (có thêm luồng ký 218 tự), để xuất liệu Console sử dụng luồng ký tự luồng byte Tuy nhiên, h đến na để xuất liệ C n le thường người ta dùng luồng byte Chúng ta h q en th ộc với hương thứ liệu Console Bên cạnh đ1 húng ta ũng ó thể Ví dụ: minh họa sử dụng hương thứ S tem rint() rintln(), ng để xuất ng hương thức write() t.write() để xuất ký tự ‘ ’ C n le import java.io.*; class WriteDemo{ public static void main(String args[]){ int b; b = 'X'; System.out.write(b); System.out.write('\n'); } } Kết thực thi chươn trình: 5.3.3 Đọc ghi file dùng luồng Byte Tạo luồng Byte gắn với file định dùng FileInputStream ileO t tStream Để mở file, đơn giản cần tạo đối tượng lớp này, tên file cần mở thông số constructor Khi file mở, việ đọc ghi liệu file thực h ình thường thông q a hương thức cung cấp luồng 5.3.3.1 Đọc liệu từ file Mở file để đọc liệu FileInputStream(String fileName) throws FileNotFoundException Nếu file không tồn tại: ném FileNotFoundException Đọc liệ : ng hương thức read() int read( ) throws IOException: đọc byte từ file trả giá trị byte đọ Trả -1 hết file, ném IOException có lỗi đọc 219 Đóng file: ng hương thức close() void close( ) throws IOException: sau làm việc xong cần đóng file để giải phóng tài nguyên hệ thống ấp phát cho file Ví dụ: /* Hiển thị nội dung file tên te t.txt lư tạiD:\test.txt */ import java.io.*; class ShowFile{ public static void main(String args[]) throws IOException{ int i; FileInputStream fin; try{ fin = new ileIn tStream(“D:\\te t.txt”); }catch(FileNotFoundException exc){ System.out.println("File Not Found"); return; }catch(ArrayIndexOutOfBoundsException exc){ System.out.println("Usage: ShowFile File"); return; } // read bytes until EOF is encountered do{ i = fin.read(); if(i != -1) System.out.print((char) i); } while(i != -1); fin.close(); } 220 return ; } // Write values to the file for(int i=0; i < data.length; i++){ try{ raf.writeDouble(data[i]); }catch(IOException exc){ System.out.println("Error writing to file."); return ; } } try{ // Now, read back specific values raf.seek(0); // seek to first double d = raf.readDouble(); System.out.println("First value is " + d); raf.seek(8); // seek to second double d = raf.readDouble(); System.out.println("Second value is " + d); raf.seek(8 * 3); // seek to fourth double d = raf.readDouble(); System.out.println("Fourth value is " + d); System.out.println(); // Now, read every other value System.out.println("Here is every other value: "); for(int i=0; i < data.length; i+=2){ raf.seek(8 * i); // seek to ith double d = raf.readDouble(); System.out.print(d + " "); 227 } System.out.println("\n"); }catch(IOException exc){ System.out.println("Error seeking or reading."); } raf.close(); } } Kết thực thi chươn trình: 5.5 Sử dụng luồng ký tự Chúng ta tìm hiểu sử dụng luồng te để xuất/nhập liệu Tuy số trường hợp luồng byte h “lý tưởng” để quản lý xuất nhập liệu kiểu character, vậ java đưa iểu luồng character phục vụ cho việc xuất nhập liệu kiểu character luồng Mức hai lớp trừ tượng Reader Writer Lớp Reader dùng cho việc nhập liệu luồng, lớp Writer dùng cho việc xuất liệu luồng Những lớp dẫn xuất từ Reader Writer thao tác luồng ký tự Unicode Những hương thứ định nghĩa tr ng lớp trừ tượng Reader Writer Phươn thức n h Reader abstract void close( ) Đóng luồng void mark(int numChars) Đ nh dấu vị trí luồng boolean markSupported( ) Kiểm tra xem luồng có hỗ trợ thao tác đánh dấu mark() không? 228 int read( ) Đọc ký tự int read(char buffer[ ]) Đọc buffer.length ký tự cho vào buffer abstract int read(char buffer[ ], int offset, int numChars) Đọc numChars ký tự cho vào vùng đệm buffer vị trí buffer[offset] boolean ready( ) Kiểm tra xem luồng có đọc không? void reset( ) Dời trỏ nhập đến vị trí đánh dấu trước long skip(long numChars) Bỏ qua numChars luồng nhập Writer abstract void close( ) abstract void flush( ) void write(int ch) void write(byte buffer[ ]) abstract void write(char buffer[ ], int offset, int numChars) void write(String str) void write(String str, int offset, int numChars) Đóng luồng xuất Có lỗi ném IOException Dọn dẹp luồng (buffer xuất) Ghi ký tự Ghi mảng ký tự Ghi phần mảng ký tự Ghi chuỗi Ghi phần chuỗi ký tự 5.5.1 Nhập Console dùng luồng ký tự Thường việc nhập liệu từ Console dùng luồng ký tự thuận lợi ng luồng byte Lớp tốt để đọc liệu nhập từ Console lớp BufferedReader Tuy nhiên xây dựng lớp BufferedReader trực tiếp từ S tem.in Tha phải chuyển thành luồng ký tự Để làm điều dùng InputStreamReader chuyển bytes thành ký tự Để ó đối tượng InputStreamReader gắn với System.in ta dùng constructor InputStreamReader InputStreamReader(InputStream inputStream) Tiế the ng đối tượng In tStreamRea er tạ để tạo BufferedReader dùng constructor BufferedReader BufferedReader(Reader inputReader) Ví dụ: Tạo BufferedReader gắn với Keyboard BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 229 Sau thực câu lệnh trên, br luồng ký tự gắn với Console thông qua System.in Ví dụ: D ng B ffere Rea er đọc ký tự từ Console Việ đọc kết thúc gặp dấu chấm (dấu chấm để kết thú hương trình) import java.io.*; class ReadChars{ public static void main(String args[]) throws IOException{ char c; BufferedReader br = newBufferedReader(new InputStreamReader(System.in)); System.out.println("Nhap chuoi ky tu, gioi han dau cham."); // read characters do{ c = (char) br.read(); System.out.println(c); }while(c != '.'); } } Kết thực thi chươn trình: Ví dụ: D ng B ffere Rea er đọc chuỗi ký tự từ C n le Chương trình ết thúc gặp chuỗi đọc chuỗi “ t ” import java.io.*; class ReadLines{ public static void main(String args[]) throws IOException{ // create a BufferedReader using System.in 230 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str; System.out.println("Nhap chuoi."); System.out.println("Nhap 'stop' ket thuc chuong trinh."); do{ str = br.readLine(); System.out.println(str); } while(!str.equals("stop")); } } Kết thực thi chươn trình: 5.5.2 Xuất Console dùng luồng ký tự ng S tem Trong ngôn ngữ java, bên cạnh việ (thường ng để e t để xuất liệu Console g hương trình), húng ta ó thể dùng luồng PrintWriter hương trình “ h ên nghiệ ” PrintWriter lớp luồng ký tự Việc dùng lớp luồng ký tự để xuất liệ C n le thường đượ “ưa h ộng” Để xuất liệu Console dùng PrintWriter cần thiết phải định System.out cho luồng xuất Ví dụ: Tạ đối tượng PrintWriter để xuất liệu Console PrintWriter pw = new PrintWriter(System.out, true); Ví dụ: minh họa ng PrintWriter để xuất liệu Console import java.io.*; public class PrintWriterDemo{ public static void main(String args[]){ 231 PrintWriter pw = new PrintWriter(System.out, true); int i = 10; double d = 123.67; double r = i+d pw.println("Using a PrintWriter."); pw.println(i); pw.println(d); pw.println(i + " + " + d + " = " + r); } } Kết thực thi chươn trình: 5.5.3 Đọc/ghi File dùng luồng ký tự Thông thường để đọ /ghi file người ta thường dùng luồng te, luồng ký tự húng ta ũng ó thể thực đượ Ư điểm việc dùng luồng ký tự chúng thao tác trực tiếp ký tự Unicode Vì luồng ký tự chọn lựa tốt cần lư văn ản Unicode Hai lớp luồng thường dùng cho việ đọc/ghi liệu ký tự xuống file FileReader FileWriter Ví dụ: Đọc òng văn ản nhập từ bàn phím ghi chúng xuống file tên “te t.txt” Việ đọc ghi kết thú hi người dùng nhập vào chuỗi “ t import java.io.*; class KtoD{ public static void main(String args[]) throws IOException{ String str; FileWriter fw; 232 ” BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); try{ fw = new FileWriter("D:\\test.txt"); }catch(IOException exc){ System.out.println("Khong the mo file."); return ; } System.out.println("Nhap ('stop' de ket thuc chuong trinh)."); do{ System.out.print(": "); str = br.readLine(); if(str.compareTo("stop") == 0) break; str = str + "\r\n"; fw.write(str); } while(str.compareTo("stop") != 0); fw.close(); } } Kết thực thi chươn trình Dữ liệu nhập từ Console: Dữ liệu ghi xuống file: 233 Ví dụ: Đọc hiển thị nội dung file “te t.txt” lên hình import java.io.*; class DtoS{ public static void main(String args[]) throws Exception{ FileReader fr = new FileReader("D:\\test.txt"); BufferedReader br = new BufferedReader(fr); String s; while((s = br.readLine()) != null){ System.out.println(s); } fr.close(); } } Kết thự thi hương trình Nội dung file test.txt: Kết đọc file hiển thị Console: 5.6 Lớp File 234 Lớp File không phục vụ cho việc nhập/xuất liệu luồng Lớ đượ ile thường ng để biết thông tin chi tiết tậ tin ũng thư mục (tên, ngày tạ , í h thướ , …) java.lang.Object + java.io.File Các Constructor: Tạ đối tượng File từ đường dẫn tuyệt đối public File(String pathname) ví dụ: ile f = new ile(“C:\\Java\\v 1.java”); Tạ đối tượng File từ tên đường dẫn tên tập tin tách biệt public File(String parent, String child) ví dụ: ile f = new ile(“C:\\Java”, “v 1.java”); Tạ đối tượng File từ đối tượng File khác public File(File parent, String child) ví dụ: ile ir = new ile (“C:\\Java”); ile f = new ile( ir, “v 1.java”); Một số hương thứ thường gặp lớp File (chi tiết hương thứ đọc thêm tài liệu J2SE API Specification) public String getName() Lấy tên đối tượng File public String getPath() Lấy đường dẫn tập tin public boolean isDirectory() Kiểm tra xem tập tin có phải thư mục không? Kiểm tra xem tập tn có phải file không? public boolean isFile() … public String[] list() Lấy danh sách tên tập tin thư mục đối tượng File xét trả mảng Ví dụ: import java.awt.*; import java.io.*; 235 public class FileDemo{ public static void main(String args[]){ Frame fr = new Frame ("File Demo"); fr.setBounds(10, 10, 300, 200); fr.setLayout(new BorderLayout()); Panel p = new Panel(new GridLayout(1,2)); List list_C = new List(); list_C.add("C:\\"); File driver_C = new File ("C:\\"); String[] dirs_C = driver_C.list(); for (int i=0;i[...]... ũng như thư mục (tên, ngày giờ tạ , í h thướ , …) java. lang.Object + java. io.File Các Constructor: Tạ đối tượng File từ đường dẫn tuyệt đối public File(String pathname) ví dụ: ile f = new ile(“C:\ \Java\ \v 1 .java ); Tạ đối tượng File từ tên đường dẫn và tên tập tin tách biệt public File(String parent, String child) ví dụ: ile f = new ile(“C:\ \Java , “v 1 .java ); Tạ đối tượng File từ một đối tượng File... System.out.println("Read error."); } dataIn.close(); } } Kết quả thực thi chươn trình: Dữ liệu ghi xuống file D:\\testdata 2 25 Kết quả đọc và xuất ra Console: 5. 4 File truy cập ngẫu nhiên (Random Access Files) ([2] trang 56 6) Bên cạnh việc xử lý xuất nhập trên file theo kiểu tuần tự thông qua các luồng, java ũng hỗ trợ truy cập ngẫu nhiên nội dung của một file nà đó ng Ran mA e ile RandomAccessFile không dẫn xuất... 15 Đọ lại ã hàng thứ tắ ủa tệ ghi lần lượt ởi 1 ấ ố ng ên tố tìm đượ ố ng ên tố tìm đượ , h 239 ố nà đượ h Câu 20 Tìm ố đối xứng nhỏ hơn 1 ố n ( h trướ ) Câu 21 hi ố tìm đượ ra tệ the q - àng đầ tiên ủa tệ ghi ố lượng - àng thứ ấ ủa tệ ghi lần lượt tắ a : ố tìm đượ ố tìm đượ , h 240 ố nà đượ h nha ởi 1 [1] Nguyễn Phương Lan ( 0 05) , Java T p 1,2, Nhà xuất bản La động – Xã hội [2] Richard F Raposa Java. .. System.out.println("Error seeking or reading."); } raf.close(); } } Kết quả thực thi chươn trình: 5. 5 Sử dụng luồng ký tự Chúng ta đã tìm hiểu và sử dụng luồng te để xuất/nhập dữ liệu Tuy có thể nhưng trong một số trường hợp luồng byte không phải là h “lý tưởng” để quản lý xuất nhập dữ liệu kiểu character, vì vậ java đã đưa ra iểu luồng character phục vụ cho việc xuất nhập dữ liệu kiểu character trên luồng... trình ết thúc khi gặp chuỗi đọc là chuỗi “ t ” import java. io.*; class ReadLines{ public static void main(String args[]) throws IOException{ // create a BufferedReader using System.in 230 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str; System.out.println("Nhap chuoi."); System.out.println("Nhap 'stop' ket thuc chuong trinh. "); do{ str = br.readLine(); System.out.println(str);... System.out.println("Nhap 'stop' ket thuc chuong trinh. "); do{ str = br.readLine(); System.out.println(str); } while(!str.equals("stop")); } } Kết quả thực thi chươn trình: 5. 5.2 Xuất Console dùng luồng ký tự ng S tem Trong ngôn ngữ java, bên cạnh việ (thường ng để e t để xuất dữ liệu ra Console g hương trình), húng ta ó thể dùng luồng PrintWriter đối với các hương trình “ h ên nghiệ ” PrintWriter là... PrintWriter để xuất dữ liệu ra Console import java. io.*; public class PrintWriterDemo{ public static void main(String args[]){ 231 PrintWriter pw = new PrintWriter(System.out, true); int i = 10; double d = 123.67; double r = i+d pw.println("Using a PrintWriter."); pw.println(i); pw.println(d); pw.println(i + " + " + d + " = " + r); } } Kết quả thực thi chươn trình: 5. 5.3 Đọc/ghi File dùng luồng ký tự Thông... vào chuỗi “ t import java. io.*; class KtoD{ public static void main(String args[]) throws IOException{ String str; FileWriter fw; 232 ” BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); try{ fw = new FileWriter("D:\\test.txt"); }catch(IOException exc){ System.out.println("Khong the mo file."); return ; } System.out.println("Nhap ('stop' de ket thuc chuong trinh) ."); do{ System.out.print(":... file mới D:\dest.txt 5. 3.4 Đọc và ghi dữ liệu nhị phân Phần trên húng ta đã đọc và ghi các bytes dữ liệu là các ký tự mã ASCII Để đọc và ghi những giá trị nhị phân của các kiểu dữ liệu trong java, chúng ta sử dụng DataInputStream và DataOutputStream 222 DataOutputStream: hiện thực interface DataOuput Interface DataOutput có các hương thức cho phép ghi tất cả những kiểu dữ liệ ơ ở của java đến luồng (the... phải là một file không? public boolean isFile() … public String[] list() Lấy danh sách tên các tập tin và thư mục con của đối tượng File đang xét và trả về trong một mảng Ví dụ: import java. awt.*; import java. io.*; 2 35 public class FileDemo{ public static void main(String args[]){ Frame fr = new Frame ("File Demo"); fr.setBounds(10, 10, 300, 200); fr.setLayout(new BorderLayout()); Panel p = new Panel(new ... truy cập ngẫu nhiên dùng lớp RandomAccessFile  Xử lý file thư mục dùng lớp File 5. 2 Luồng (Streams) ([2] trang 55 1) 5. 2.1 Khái niệm luồng Tất hoạt động nhập/xuất liệu (nhập liệu từ bàn phím, lấy... file D:\testdata 2 25 Kết đọc xuất Console: 5. 4 File truy cập ngẫu nhiên (Random Access Files) ([2] trang 56 6) Bên cạnh việc xử lý xuất nhập file theo kiểu thông qua luồng, java ũng hỗ trợ truy... thuc chuong trinh."); do{ str = br.readLine(); System.out.println(str); } while(!str.equals("stop")); } } Kết thực thi chươn trình: 5. 5.2 Xuất Console dùng luồng ký tự ng S tem Trong ngôn ngữ java,

Ngày đăng: 19/02/2016, 22:02

TỪ KHÓA LIÊN QUAN