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

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)

40 636 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 40
Dung lượng 393,24 KB

Nội dung

Bài giảng Lập trình hướng đối tượng (dùng Java) Chương 4 Vào ra dữ liệu trong Java cung cấp cho người học các kiến thức 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.

Trang 2

Nội dung

1. Tổng quan về vào ra dữ liệu trong Java

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

3. Các lớp vào ra theo luồng byte

4. Lớp File

5. Vào ra đối tượng và áp dụng

Trang 3

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

Trang 4

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

Trang 5

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

Trang 6

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

• 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 đủ

Trang 7

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

• 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

Trang 9

• 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 đè)

Trang 10

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

Đọ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()

Trang 11

Ví dụ

Trang 12

Ví dụ (tt)

Trang 13

Ví dụ (tt)

Trang 14

Ví dụ (tt)

Trang 15

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

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

Trang 17

• Khởi tạo: FileWriter(filePath)

• Phương thức write(): ghi dữ liệu vào file

Trang 19

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

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

Trang 20

public class FileTextDungPrintWriter {

public static void main(String []args){

String []hoTen = {"Nguyen Van An",

"Lam Thanh Ngoc",

"Phan Nhu Thong"};

Trang 21

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

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

Trang 22

public class FileTextDungBufferedReader {

public static void main(String []args){

try{

FileReader in =

new FileReader( "textfile.txt");

BufferedReader bIn = new BufferedReader(in);

Trang 23

Bài tập

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”

Trang 24

Lớp File

• 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)

Trang 25

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

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

• 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

• createNewFile(): tạo file mới

• boolean isDirectory(): trả về true nếu là thư mục

• boolean isFile(): trả về true nếu là file

Trang 26

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

• boolean canRead(): trả về true nếu có quyền đọc

• boolean canWrite(): trả về true nếu có quyền ghi

• boolean canExecute(): trả về true nếu có quyền thực thi

• String getName()

• String getParent()

Trang 27

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

• String[] list(): trả về tên các thư mục con và file

• String[] list(FileNameFilter filter): trả về tên các thư mục con và file có chứa filter

• File[] listFiles()

• File[] listFiles(FileFilter filter): trả về các đối tượng file thỏa mãn filter

Trang 28

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

• boolean exists(): trả về true nếu tồn tại file, thư mục

• long length(): trả về kích thước của file (byte)

• boolean delete()

• void deleteOnExit(): xóa khi tắt máy ảo JVM

• boolean renameTo(File dest): đổi tên

• boolean setReadOnly(): thiết lập thuộc tính read-only

Trang 30

Ví dụ liệt kê các file có phần mở rộng tương ứng trong thư mục

public class TimFile implements FilenameFilter {

public static void main(String []args) {

Scanner input = new Scanner(System.in);

String path, ext;

System.out.print("Nhap vao ten thu muc: ");

Trang 31

Bài tập

Tìm file trong thư mục

• Đầu vào: tên thư mục và file cần tìm

Đầu ra: đường dẫn của file tìm được (nếu có)

Trang 32

Lớp Files

• Các phương thức đều là static

• Đối số là đối tượng từ lớp Path để định vị file trên hệ thống

• Tạo đối tượng Path từ đường dẫn file

Paths.get(String filePath)

Trang 33

Lớp Files – Các phương thức

• boolean isDirectory(Path): trả về true nếu là thư mục

• boolean isRegularFile(Path): trả về true nếu là file

• boolean isReadable(Path): trả về true nếu được phép đọc

• boolean isWritable(Path)

• boolean isExecutable(Path)

Trang 34

Lớp Files – Các phương thức

• Path createFile(Path, FileAttribute): tạo file

• Path createDirectory(Path, FileAttribute): tạo thư mục

• Path createDirectories(Path, FileAttribute): thạo thư mục, bao gồm cả thư mục cha nếu không tồn tại

Trang 35

Lớp Files – Các phương thức

• void deleteIfExist(Path): xóa

• boolean notExist(Path): trả về true nếu file không tồn tại

• long size(Path): trả về kích thước file (byte)

• Path copy(Path source, Path target, CopyOption options)

• Path move(Path source, Path target, CopyOption options)

Trang 36

Lớp Files – Các phương thức đọc

• byte[] readAllBytes(Path): đọc nội dung file vào mảng byte

• BufferedReader newBufferedReader(Path): mở file và trả lại đối tượng BufferedReader

• BufferedReader newBufferedReader(Path, Charset): mở file và trả lại đối tượng BufferedReader, hỗ trợ bảng mã khác (US-ASCII, UTF-16), mặc định(UTF-8)

• InputStream newInputStream(Path, OpenOption): mở file và trả lại đối tượng InputStream

Trang 37

Lớp Files – Các phương thức ghi

• Path write(Path, byte[], OpenOption): ghi mảng byte vào file BufferedWriter newBufferedWriter(Path, OpenOption): mở và tạo một đối tượng BufferedWriter để ghi

• BufferedWriter newBufferedWriter(Path, Charset, OpenOption)

• OutputStream newOutputStream(Path, OpenOption): mở và tạo một đối tượng OutputStream để ghi

Trang 38

Lớp Files – Các OpenOption

• APPEND: ghi tiếp

• CREATE: tạo file mới và ghi

• READ: mở để đọc

• WRITE: mở để ghi

• DELETE_ON_CLOSE: xóa khi đóng file

• DSYNC và SYNC: yêu cầu đồng bộ hóa khi có nhiều luồng cùng truy cập vào file

Trang 39

Lớp Files – Các CopyOption

• COPY_ATTRIBUTES: Sao chép cả thuộc tính

• REPLACE_EXISTING: chép đè lên file cũ (nếu có)

Trang 40

Q&A

Ngày đăng: 15/05/2017, 10:28

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w