Tải bản đầy đủ (.pptx) (40 trang)

Bài giảng Lập trình hướng đối tượng (dùng Java) Chương 4 Trần Minh Thái (2017)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.3 MB, 40 trang )

Chương 4
Vào ra dữ liệu trong Java

TRẦN MINH THÁI
Email:
Website: www.minhthai.edu.vn
Cập nhật: 18 tháng 07 năm 2016


Nội dung
#2

1.
2.
3.
4.
5.

Tổng quan về vào ra dữ liệu trong Java
Các lớp vào ra theo luồng ký tự
Các lớp vào ra theo luồng byte
Lớp File
Vào ra đối tượng và áp dụng


Tổng quan về vào ra dữ liệu
#3


Các lớp vào ra theo luồng ký tự
#4




Các lớp vào ra theo luồng byte
#5


Vào ra dữ liệu trên thiết bị chuẩn
#6





Vào dữ liệu từ thiết bị chuẩn (bàn phím): System.in




Một đối tượng của lớp InputStream  đọc ghi theo luồng byte
Các phương thức rất hạn chế

Thường được sử dụng để khởi tạo các đối tượng luồng khác để xử lý dễ dàng hơn:




new BufferedReader(new InputStreamReader(System.in))
new Scanner(System.in)

Ra dữ liệu trên thiết bị chuẩn (màn hình): System.out





Một đối tượng của lớp PrintStream
Cung cấp các phương thức đầy đủ


Vào ra dữ liệu trên file
#7





Bước 1. Tạo đối tượng file để đọc/ ghi
Bước 2. Thao tác xử lý trên file
Bước 3. Đóng file


Vào ra dữ liệu trên file
#8

Có hai dạng file




File nhị phân: Dữ liệu được tổ chức theo dạng bit-by-bit
File văn bản:



Vào ra dữ liệu trên file nhị phân
#9

Ghi file




FileOutputStream(filePath): ghi dữ liệu theo luồng



Phương thức write(int)

DataOutputStream(outputStreamObject): ghi dữ liệu cơ bản



Phương thức writeInt(), writeDouble(), writeChars(),...

!!! Ghi tiếp vào file có sẵn: bổ sung thêm tham số thứ 2 là true
(mặc định không truyền là false: ghi đè)


Vào ra dữ liệu trên file nhị phân
#10

Đọc file





FileInputStream(filePath): đọc dữ liệu theo luồng



Phương thức int read() trả về -1 nếu đọc hết file

DataInputStream(inputStreamObject): đọc dữ liệu cơ bản



Phương thức readInt(), readDouble(),...

Đóng file: close()


Ví dụ
#11


Ví dụ (tt)

#12


Ví dụ (tt)


#13


Ví dụ (tt)

#14


Vào ra sử dụng bộ đệm
#15

Ghi dữ liệu sử dụng bộ đệm: BufferedOutputStream





Khởi tạo: BufferedOutputStream(outputStreamObject)
Phương thức flush(): xóa bộ đệm
Phương thức write(int): ghi dữ liệu

Đọc dữ liệu sử dụng bộ đệm: BufferedInputStream





Khởi tạo: BufferedInputStream(inputStreamObject)
Phương thức available(): trả về 0 nếu đọc hết dữ liệu
Phương thức read(int): trả về -1 nếu đọc hết dữ liệu



Ví dụ
public void copyFile(){
try {
#16

InputStream input = new FileInputStream(srcFile);
BufferedInputStream bInput =
new BufferedInputStream(input);
OutputStream output =
new FileOutputStream(desFile);
BufferedOutputStream bOutput =
new BufferedOutputStream(output);
int data;
while(bInput.available()>0){
data = bInput.read();
bOutput.flush();
bOutput.write(data);
}
}
catch(IOException e){
System.out.println(e);
}
}


Vào ra dữ liệu file văn bản
#17


FileReader





Khởi tạo: FileReader(filePath)
Phương thức read(): đọc từng ký tự
Trả về -1 nếu hết file

FileWriter




Khởi tạo: FileWriter(filePath)
Phương thức write(): ghi dữ liệu vào file


public static void main(String []args){
try
{
#18

//Ghi file
FileWriter out = new FileWriter("test.txt");
out.write("Nguyen Van An");
out.write(String.valueOf(10.5));
out.write(String.valueOf('c'));
out.close();

//Doc file
FileReader in = new FileReader("test.txt");
int data;
while((data=in.read())!=-1){
System.out.println((char)data);
}
in.close();
}
catch(IOException e){
System.out.println(e);
}

}


Đọc ghi từng dòng file văn bản
#19

Ghi từng dòng văn bản: Sử dụng PrintWriter




Khởi tạo: new PrintWriter(writerObject)
Phương thức: print(), printf(), println()

Ghi từng dòng văn bản: Sử dụng BufferedWriter





Khởi tạo: new BufferedWriter(writerObject)
Phương thức: void write(int),void write(String), void writeLine()

Đọc từng dòng văn bản: Sử dụng BufferedReader




Khởi tạo: new BufferedReader(readerObject)
Phương thức: String readLine() trả về null nếu đọc hết file


public class FileTextDungPrintWriter {
public static void main(String []args){
String []hoTen = {"Nguyen Van An",
#20

"Lam Thanh Ngoc",
"Phan Nhu Thong"};
double []dtb = {7.5, 8.0, 6.9};
try{
FileWriter out =
new FileWriter("textfile.txt");
PrintWriter printWriter =
new PrintWriter(out);
for(int i=0; i<3; i++){
printWriter.println(hoTen[i]+":"+dtb[i]);
}
out.close();

}
catch(IOException e){
System.out.println(e);
}

}
}

Nguyen Van An:7.5
Lam Thanh Ngoc:8.0
Phan Nhu Thong:6.9


Tách xâu ký tự theo dấu hiệu phân cách (delimiter)
#21





java.util.StringTokenizer
Delimiter: mặc định là dấu cách trắng \s
Định nghĩa lại trong phương thức khởi tạo
StringTokenizer(String input, String delimiter)





nextToken(): trả lại xâu phần tử tiếp theo

hasMoreTokens(): trả về false nếu không còn xâu phần tử
countTokens(): trả về số xâu phần tử tách được


public class FileTextDungBufferedReader {
public static void main(String []args){
try{
FileReader in =

#22

new FileReader("textfile.txt");
BufferedReader bIn = new BufferedReader(in);
String line;
StringTokenizer data;
while((line=bIn.readLine())!=null){
data=new StringTokenizer(line, ":");
while(data.hasMoreTokens()){
System.out.print(data.nextToken()
+ " ");
}
System.out.println();
}
}
catch(IOException e){
System.out.println(e);
}
}
}


Nguyen Van An 7.5
Lam Thanh Ngoc 8.0
Phan Nhu Thong 6.9


Bài tập
#23

Thống kê số lần xuất hiện của ký tự chữ cái trong file text

-

Đầu vào: file text “input.txt” chứa nội dung văn bản được lưu trong thư mục Project hiện hành
Đầu ra: file “thongke.txt” chứa n dòng (tương ứng với n chữ cái được sắp xếp theo thứ tự từ
điển). Mỗi dòng gồm 2 thông tin: ký tự và số lần xuất hiện trong file “input.txt”


Lớp File
#24




Cung cấp các phương thức thao tác với file, thư mục trên máy tính
Các phương thức khởi tạo:




File(String filePath): Tạo đối tượng file với đường dẫn (và tên file)

File(String path, String filePath): Tạo đối tượng file nằm trong thư mục cha path

!!! Chỉ tạo đối tượng (chưa tạo file hay thư mục)


Lớp File – Các phương thức
#25




boolean mkdir(): tạo thư mục có tên chỉ ra khi khởi tạo đối tượng File





createNewFile(): tạo file mới

boolean mkdirs(): tạo thư mục có tên chỉ ra khi khởi tạo đối tượng File, bao gồm cả thư mục cha nếu
cần thiết
boolean isDirectory(): trả về true nếu là thư mục
boolean isFile(): trả về true nếu là file


×