1. Trang chủ
  2. » Thể loại khác

GIÁO TRÌNH CÔNG NGHỆ JAVA. TS. Hoàng Xuân Thảo

153 2 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 153
Dung lượng 1,67 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

FileURI uri Khi bạn có đối tượng File, thì có các phương thức sau giúp bạn thao tác các file trong Java: STT Phương thức và Miêu tả 1 public String getName Trả về tên của file hoặc thư

Trang 1

ĐẠI HỌC KINH DOANH VÀ CÔNG NGHỆ HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN

GIÁO TRÌNH CÔNG NGHỆ JAVA Chủ biên : TS Hoàng Xuân Thảo

Biên soạn: TS Hoàng Xuân Thảo

ThS Phạm Nguyên Văn

(Dùng cho chương trình đào tạo hệ đại học)

Lưu hành nội bộ

HÀ NỘI - 2016

Trang 2

MỤC LỤC

Chương 1: I/O và File

1 Lý thuyết:

1.1 Một số cách thức vào/ra file với java.io

1.1.1 Ghi dạng byte: File, FileInputStream, FileOutputStream1.1.2 Ghi dạng text: FileReader, FileWriter

1.3 JButton, JLabel, JTextField, JTextArea

1.4 JCheckbox, JRadioButton, JPasswordFiled

1.5 JScrollPane, JOptionPane, JDialog

1.6 Layout: FlowLayout, BorderLayout, GridLayout

1.2 HashSet (trong Set interface)

1.3 LinkedList (trong List interface)

Trang 3

1.4 PriorityQueue (trong Queue interface)

2 Kiểm tra lần 1

Chương 5 : Kết nối database

1 Lý thuyết:

1.1 Lập trình JDBC:

1.2 Tạo kết nối tới 1 cơ sở dữ liệu (ví dụ Access )

1.3 Truy xuất dữ liệu, tạo, chèn, xoá: Statement, ResultSet

2 Thực hành:

Chương 6: Ôn tập

1 Bài tập java cơ bản

2 Bài tập java nâng cao

Trang 4

Chương 1: I/O và File

1 Lý thuyết:

1.1 Một số cách thức vào/ra file với java.io

Gói java.io chứa gần như tất cả các lớp bạn cần để thực hiện input và output

(I/O) trong Java Tất cả những stream này biểu diễn một nguồn input và mộtđích đến output Stream trong java.io package hỗ trợ nhiều như liệu như cáckiểu gốc, Object, các ký tự nội bộ, …

Một stream có thể được định nghĩa như là một dãy liên tục dữ liệu

InputStreamđược sử dụng để đọc dữ liệu từ một nguồn

và OutputStream được sử dụng để ghi dữ liệu tới một đích đến.

Java cung cấp sự hỗ trợ mạnh mẽ nhưng linh hoạt cho I/O liên quan tới cácFile và các mạng nhưng trong phần hướng dẫn này, chúng tôi chỉ bàn luậntính năng cơ bản liên quan tới các stream và I/O Chúng ta sẽ xem xét từng

ví dụ được sử dụng phổ biến nhất

Byte Stream trong Java

Byte Stream trong Java được sử dụng để thực hiện input và output của cácbyte (8 bit) Mặc dù có nhiều lớp liên quan tới byte stream nhưng các lớp

thường được sử dụng nhất là: FileInputStream và FileOutputStream Sau

đây là một ví dụ sử dụng hai lớp này để sao chép một input file vào trongmột output file:

import java.io.*;

public class CopyFile {

public static void main(String args[]) throws IOException

{

FileInputStream in = null;

FileOutputStream out = null;

try {

Trang 5

Bây giờ giả sử chúng ta có một file là input.txt có nội dung sau:

Day la vi du ve sao chep file

Trong bước tiếp theo, biên dịch chương trình trên và thực thi nó, sẽ cho kết

quả là tạo một file là output.txt có cùng nội dung như chúng ta có trong

input.txt Vì thế, bạn đặt code trên vào trong CopyFile.java file và làm nhưsau:

$javac CopyFile.java

$java CopyFile

Character Stream trong Java

Byte Stream trong Java được sử dụng để thực hiện input và output của các

byte (8 bit), trong khi đó, Character Stream trong Java được sử dụng để

Trang 6

thực hiện input và output cho Unicode 16 bit Mặc dù có nhiều lớp liên quan

tới character stream nhưng các lớp thường dùng nhất là FileReader và

FileWriter… Mặc dù trong nội tại, FileReader sử dụng FileInputStream và

FileWriter sử dụng FileOutputStream, nhưng có một điểm khác biệt lớn ởđây là FileReader đọc hai byte cùng một thời điểm và FileWriter ghi 2 bytecùng một lúc

Chúng ta có thể viết lại ví dụ trên mà sử dụng hai lớp này để sao chép mộtinput file (có các ký tự Unicode) vào trong một output file

import java.io.*;

public class CopyFile {

public static void main(String args[]) throws IOException

Trang 7

}

}

}

Giả sử chúng ta có input.txt có nội dung sau:

Day la vi du ve sao chep file

Trong bước tiếp theo, biên dịch chương trình trên và thực thi nó, sẽ cho kếtquả là tạo một file là output.txt có cùng nội dung như chúng ta có tronginput.txt Vì thế, bạn đặt code trên vào trong CopyFile.java file và làm nhưsau:

$javac CopyFile.java

$java CopyFile

Standard Stream trong Java

Tất cả các Ngôn ngữ lập trình cung cấp sự hỗ trợ cho I/O chuẩn, tại đâychương trình của người sử dụng có thể nhận đầu vào từ một bàn phím và sau

đó tạo kết quả trên màn hình máy tính Nếu bạn đã biết về các ngôn ngữC/C++, thì bạn phải biết về 3 thiết bị chuẩn là STDIN, STDOUT, vàSTDERR Theo cách tương tự, Java cung cấp 3 Standard Stream sau:

 Đầu vào chuẩn (Standard Input): Nó được sử dụng để truyền dữ liệu

tới chương trình của người dùng và thường thì một bàn phím được sử

dụng như là đầu vào chuẩn và được biểu diễn như System.in.

 Đầu ra chuẩn (Standard Output): Nó được sử dụng để hiển thị kết quả

đầu ra từ chương trình của người dùng và thường thì một màn hình máytính được sử dụng như là đầu ra chuẩn và được biểu diễn như là

System.out.

 Lỗi chuẩn (Standard Error): Được sử dụng để hiển thị các lỗi trong

chương trình của người dùng và thường thì một màn hình máy tính được

sử dụng như là lỗi chuẩn và được biểu diễn như là System.err.

Sau đây là một chương trình đơn giản tạo InputStreamReader để đọc

luồng đầu vào chuẩn tới khi người sử dụng gõ một "q"

import java.io.*;

Trang 8

public class ReadConsole {

public static void main(String args[]) throws IOException

{

InputStreamReader cin = null;

try {

cin = new InputStreamReader(System.in);

System.out.println("Nhap cac ky tu, 'q' de thoat.");

Trang 9

e

q

q

Đọc và Ghi File trong Java

Như đã miêu tả trước đó, một Stream có thể được định nghĩa như là một dãy

liên tục của dữ liệu InputStream được sử dụng để đọc dữ liệu từ một nguồn vàOutputStream được sử dụng để ghi dữ liệu tới một đích.

Dưới đây là một cấu trúc có thứ tự của các lớp để xử lý các luồng Input và Output

1.1.1 Ghi dạng byte: File, FileInputStream,

FileOutputStream File

Lớp File trong Java biểu diễn các pathname của các file và thư mục theo

phương thức trừu tượng Lớp này được sử dụng để tạo các file và thư mục,

để tìm kiếm các file, xóa các file, …

Đối tượng File biểu diễn file/thư mục thực sự trên đĩa Có các constructorsau để tạo một đối tượng File trong Java:

Cú pháp sau tạo một đối tượng File mới từ một pathname trừu tượng cha vàmột chuỗi pathname con

Trang 10

File(File parent, String child);

Cú pháp sau tạo một đối tượng File mới bởi việc biến đổi chuỗi pathname

đã cho thành một pathname trừu tượng

File(String pathname)

Cú pháp sau tạo một đối tượng File mới từ một chuỗi pathname cha và một chuỗi pathname con

File(String parent, String child)

Cú pháp sau tạo một đối tượng File mới bởi việc biến đổi URI đã cho thành một pathname trừu tượng

File(URI uri)

Khi bạn có đối tượng File, thì có các phương thức sau giúp bạn thao tác các

file trong Java:

STT Phương thức và Miêu tả

1 public String getName()

Trả về tên của file hoặc thư mục đã được biểu thị bởi pathnametrừu tượng này

2 public String getParent()

Trả về chuỗi pathname của pathname trừu tượng cha, hoặc nullnếu pathname này không là tên của một thư mục cha

3 public File getParentFile()

Trả về pathname trừu tượng của pathname trừu tượng cha, hoặcnull nếu pathname này không là tên của một thư mục cha

4 public String getPath()

Biến đổi pathname trừu tượng này thành một chuỗi pathname

Trang 11

5 public boolean isAbsolute()

Kiểm tra có hay không pathname trừu tượng này là absolute Trả

về true nếu là absolute, nếu không là false

6 public String getAbsolutePath()

Trả về chuỗi pathname tuyệt đối của pathname trừu tượng này

7 public boolean canRead()

Kiểm tra có hay không ứng dụng có thể đọc file, được biểu thị bởipathname trừu tượng này Trả về true nếu và chỉ nếu file đã xácđịnh bởi pathname trừu tượng này là tồn tại và có thể được đọc từứng dụng; nếu không là false

8 public boolean canWrite()

Kiểm tra có hay không ứng dụng có thể sửa đổi file, được biểu thịbởi pathname trừu tượng này Trả về true nếu và chỉ nếu hệ thốngfile thực sự chứa một file được biểu thị bằng pathname trừu tượngnày và ứng dụng được phép write tới file đó; nếu không là false

9 public boolean exists()

Kiểm tra có hay không file hoặc thư mục được biểu thị bởipathname trừu tượng này là tồn tại Trả về true nếu và chỉ nếu filehoặc thư mục được biểu thị bởi pathname trừu tượng này là tồntại; nếu không là false

10 public boolean isDirectory()

Kiểm tra có hay không file được biểu thị bởi pathname trừu tượngnày là một thư mục Trả về true nếu và chỉ nếu file được biểu thịbởi pathname trừu tượng này là tồn tại và là một thư mục; nếukhông là false

11 public boolean isFile()

Kiểm tra có hay không file được biểu thị bởi pathname trừu tượngnày là một normal file Một file là normal nếu nó không là một thưmục và ngoài ra, thỏa mãn các tiêu chuẩn khác phụ thuộc vào hệthống Bất kỳ một non-directory file được tạo bởi một ứng dụng

Trang 12

Java được bảo đảm là một normal file Trả về true nếu và chỉ nếufile được biểu thị bởi pathname trừu tượng này là một normal file;nếu không là false

12 public long lastModified()

Trả về time mà file được biểu thị bởi pathname trừu tượng nàyđược sửa đổi lần cuối cùng Trả về giá trị long biểu diễn thời gian

mà file được sửa đổi lần cuối cùng, được tính toán bằng mili giây

từ 00:00:00 GMT, 1/1/1970, hoặc 0L nếu file không tồn tại hoặcnếu một I/O error xuất hiện

13 public long length()

Trả về độ dài của file được biểu thị bởi pathname trừu tượng này.Giá trị trả về là không rõ ràng nếu pathname này biểu thị một thưmục

14 public boolean createNewFile() throws IOException

Tạo một file mới, trống với tên pathname trừu tượng này nếu vàchỉ nếu một file với tên này chưa tồn tại Trả về true nếu và chỉnếu file với tên này không tồn tại và được tạo thành công; nếu filevới tên này đã tồn tại, thì trả về false

15 public boolean delete()

Xóa file hoặc thư mục được biểu thị bởi pathname trừu tượng này.Nếu pathname này biểu thị một thư mục, thì thư mục phải là trống

để bị xóa Trả về true nếu và chỉ nếu file hoặc thư mục bị xóathành công; nếu không là false

16 public void deleteOnExit()

Yêu cầu rằng file hoặc thư mục được biểu thị bởi pathname trừutượng này để bị xóa khi thiết bị ảo kết thúc

17 public String[] list()

Trả về một mảng các chuỗi chỉ các file và thư mục trong thư mục

Trang 13

được biểu thị bởi pathname trừu tượng này

18 public String[] list(FilenameFilter filter)

Trả về một mảng các chuỗi chỉ các file và thư mục trong thư mụcđược biểu thị bởi pathname trừu tượng này mà thỏa mãn filter đãcho

20 public File[] listFiles()

Trả về một mảng các pathname trừu tượng biểu thị các file trongthư mục được biểu thị bởi pathname trừu tượng này

21 public File[] listFiles(FileFilter filter)

Trả về một mảng các pathname trừu tượng biểu thị các file và thưmục trong thư mục được biểu thị bởi pathname trừu tượng này màthỏa mãn filter đã cho

22 public boolean mkdir()

Tạo thư mục được chỉ bởi pathname trừu tượng này Trả về truenếu và chỉ nếu thư mục được tạo; nếu không là false

23 public boolean mkdirs()

Tạo thư mục được chỉ bởi pathname trừu tượng này, bao gồm bất

kỳ thư mục cha nào cần thiết nhưng không tồn tại Trả về true nếu

và chỉ nếu thư mục được tạo, cùng với tất cả thư mục cha cầnthiết; nếu không là false

24 public boolean renameTo(File dest)

Đổi tên file được biểu thị bởi pathname trừu tượng này Trả vềtrue nếu và chỉ nếu việc đổi tên thành công; nếu không là false

25 public boolean setLastModified(long time)

Thiết lập thời gian chỉnh sửa cuối cùng của file hoặc thư mụcđược chỉ bởi pathname trừu tượng này Trả về true nếu và chỉ nếuhoạt động này thành công; nếu không là false

Trang 14

26 public boolean setReadOnly()

Đánh dấu file hoặc thư mục được chỉ bởi pathname trừu tượngnày để mà các hoạt động read-only được cho phép Trả về true nếuhoạt động này thành công; nếu không là false

27 public static File createTempFile(String prefix, String suffix,

File directory) throws IOException

Tạo một file trống trong thư mục đã cho, bởi sử dụng các chuỗitiền tố và hậu tố đã cung cấp để tạo tên của nó Trả về pathnametrừu tượng biểu thị một file trống mới được tạo

28 public static File createTempFile(String prefix, String suffix)

throws IOException

Tạo một file trống trong thư mục temporary-file, bởi sử dụng tiền

tố và hậu tố đã cung cấp để tạo tên của nó Triệu hồi phương thứcnày tương đương với gọi phương thức createTempFile(prefix,suffix, null) Trả về pathname trừu tượng biểu thị một file trốngmới được tạo

29 public int compareTo(File pathname)

So sánh 2 pathname trừu tượng theo từ điển Trả về 0 nếu tham số

là cân bằng với pathname trừu tượng này, một giá trị nhỏ hơn 0nếu pathname trừu tượng này nhỏ hơn tham số theo từ điển, hoặcmột giá trị lớn hơn 0 nếu pathname trừu tượng này lớn hơn tham

số theo từ điển

30 public int compareTo(Object o)

So sánh pathname trừu tượng này với đối tượng khác Trả về 0nếu tham số là cân bằng với pathname trừu tượng này, một giá trịnhỏ hơn 0 nếu pathname trừu tượng nhỏ hơn tham số theo từ điển,hoặc một giá trị lớn hơn 0 nếu pathname trừu tượng này lớn hơntham số theo từ điển

31 public boolean equals(Object obj)

Kiểm tra pathname trừu tượng này có cân bằng với đối tượng đãcung cấp không Trả về true nếu và chỉ nếu tham số là không null

Trang 15

và là một pathname trừu tượng mà biểu thị file hoặc thư mục giống như với pathname trừu tượng này

32 public String toString()

Trả về chuỗi pathname của pathname trừu tượng này Đây là chuỗi được trả về bởi phương thức getPath()

Ví dụ

Sau đây là ví dụ minh họa đối tượng File trong Java:

package com.tutorialspoint;

import java.io.File;

public class FileDemo {

public static void main(String[] args) {

/ true neu file la executable

boolean bool = f.canExecute();

// tim absolute path

Trang 16

test1.txt la executable: true

test2.txt la executable: false

FileInputStream

Luồng này được sử dụng để đọc dữ liệu từ các file Các đối tượng có thểđược tạo bởi sử dụng từ khóa new và có một số kiểu constructor có sẵn.Constructor sau đây nhận tên file như là một chuỗi để tạo một đối tượngInput Stream để đọc file:

InputStream f = new FileInputStream("C:/java/hello");

Constructor sau nhận một đối tượng File để tạo một đối tượng Input Stream

để đọc file Đầu tiên chúng ta tạo một đối tượng file bởi sử dụng phươngthức File() như sau:

Trang 17

File f = new File("C:/java/hello");

InputStream f = new FileInputStream(f);

Khi chúng ta có đối tượng InputStream, thì khi đó có một danh sách các

phương thức có thể được sử dụng để đọc stream hoặc để thực hiện hoạtđộng nào khác trên stream này

STT Phương thức và Miêu tả

1 public void close() throws IOException{}

Phương thức này đóng output stream Giải phóng bất kỳ nguồn hệthống nào liên kết với file Ném một IOException

2 protected void finalize()throws IOException {}

Phương thức này xóa sự kết nối tới File đó Bảo đảm rằng phươngthức close của output stream này được gọi khi không có thamchiếu nào nữa tới stream này Ném một IOException

3 public int read(int r)throws IOException{}

Phương thức này đọc byte dữ liệu đã xác định từ InputStream Trả

về một int Trả về byte dữ liệu tiếp theo và -1 sẽ được trả về nếukết thúc file

4 public int read(byte[] r) throws IOException{}

Phương thức này đọc r byte từ input stream vào trong một mảng.Trả về tổng số byte đã đọc Nếu kết thúc file, -1 được trả về

5 public int available() throws IOException{}

Cung cấp số byte mà được đọc từ input stream này Trả về một int

Có một số input stream quan trọng khác có sẵn, để biết thêm chi tiết, bạn tham khảo theo link sau:

 ByteArrayInputStream

 DataInputStream

Trang 18

FileOutputStream được sử dụng để tạo một file và ghi dữ liệu vào trong nó.Luồng này sẽ tạo một file, nếu nó đã không tồn tại, trước khi mở nó để ghioutput

Dưới đây là hai constructor mà có thể được sử dụng để tạo một đối tượngFileOutputStream trong Java

Constructor sau nhận một tên file như là một chuỗi để tạo một đối tượnginput stream để ghi file

OutputStream f = new FileOutputStream("C:/java/hello")

Constructor sau nhận một đối tượng file để tạo một đối tượng output stream

để ghi file

File f = new File("C:/java/hello");

OutputStream f = new FileOutputStream(f);

Khi bạn có đối tượng OutputStream này, thì sau đây có các phương thức

có thể được sử dụng để ghi stream hoặc để thực hiện các hoạt động kháctrên stream này:

STT Phương thức và Miêu tả

1 public void close() throws IOException{}

Phương thức này đóng output stream Giải phóng bất kỳ nguồn

hệ thống nào liên kết với file Ném một IOException

2 protected void finalize()throws IOException {}

Phương thức này xóa sự kết nối tới File đó Bảo đảm rằngphương thức close của output stream này được gọi khi không

có tham chiếu nào nữa tới stream này Ném một IOException

3 public void write(int w)throws IOException{}

Phương thức này ghi byte đã xác định tới output stream

Trang 19

4 public void write(byte[] w)

Ghi w byte từ mảng byte đã đề cập tới OutputStream

Ngoài ra cũng có một số output stream quan trọng khác, bạn tham khảo theolink sau:

public class fileStreamTest{

public static void main(String args[]){

InputStream is = new FileInputStream("test.txt");

int size = is.available();

for(int i=0; i< size; i++)

{ System.out.print((char)is.read() + "

");

}

Trang 20

Lớp này có một số constructor để tạo các đối tượng cần thiết.

Cú pháp sau tạo một FileReader mới trong Java, được cung cấp File để đọc

Khi bạn có đối tượng FileReader, thì có một số phương thức sau giúp bạn

có thể thao tác các file này

STT Phương thức và Miêu tả

1 public int read() throws IOException

Đọc một ký tự đơn Trả về một int, mà biểu diễn ký tự đã đọc

2 public int read(char [] c, int offset, int len)

Đọc các ký tự bên trong một mảng Trả về số ký tự đã đọc

Trang 21

Ví dụ

Sau đây là ví dụ minh họa lớp FileReader trong Java:

import java.io.*;public class FileRead{ public static void main(String

args[] )throws IOException{ File file = new File("Hello1.txt");

/ tao file

file.createNewFile();

/ tao mot doi tuong FileWriter FileWriter

writer = new FileWriter(file);

/ ghi noi dung vao file

writer.write("Day\n la\n mot\n vi\n du\n");

writer.flush();

writer.close(); //Tao mot doi tuong FileReader

FileReader fr = new FileReader(file); char [] a =

Lớp FileWriter có một số constructor để tạo các đối tượng cần thiết

Cú pháp sau tạo một đối tượng FileWriter được cung cấp một đối tượngFile

FileWriter(File file)

Cú pháp sau tạo một đối tượng FileWriter được cung cấp một đối tượng Filevới một Boolean chỉ dẫn có hay không phụ thêm dữ liệu đã ghi

FileWriter(File file, boolean append)

Cú pháp sau tạo một đối tượng FileWriter mà liên kết với một FileDescriptor

Trang 22

FileWriter(String fileName, boolean append)

Khi bạn có đối tượng FileWriter, thì có một số phương thức có thể được sử

dụng để thao tác các file này

STT Phương thức và Miêu tả

1 public void write(int c) throws IOException

Ghi một ký tự đơn

2 public void write(char [] c, int offset, int len)

Ghi một phần của mảng các ký tự bắt đầu từ offset và với độ dài

len

3 public void write(String s, int offset, int len)

Ghi một phần của String bắt đầu từ offset và với độ dài len

Ví dụ: Sau đây là ví dụ minh họa lớp FileWriter trong Java:

import java.io.*;

public class FileRead{

public static void main(String args[])throws IOException{

File file = new File("Hello1.txt");

/ tao file

file.createNewFile();

/ Tao mot doi tuong FileWriter

FileWriter writer = new FileWriter(file);

/ ghi noi dung vao file

writer.write("Day\n la\n mot\n vi\n du\n");

writer.flush();

writer.close();

Trang 23

//Tao mot doi tuong FileReader

FileReader fr = new FileReader(file);

char [] a = new char[50];

fr.read(a); // doc noi dung toi mang

Như đã miêu tả trước đó, một Stream có thể được định nghĩa như là một dãy

liên tục của dữ liệu InputStream được sử dụng để đọc dữ liệu từ một nguồn vàOutputStream được sử dụng để ghi dữ liệu tới một đích

Dưới đây là một cấu trúc có thứ tự của các lớp để xử lý các luồng Input và Output

1.2.1 BufferReader

Trang 24

Lớp BufferedReader trong java được sử dụng để đọc văn bản từ một input

stream dựa trên các ký tự (character stream) Nó có thể được sử dụng để đọc

dữ liệu theo dòng (line by line) bằng phương thức readLine() Nó giúp hiệusuất nhanh Nó kế thừa lớp Reader

Khai báo của lớp BufferedReader

Dưới đây là khi báo của lớp Java.io.BufferedReader:

public class BufferedReader extends Reader

BufferedReader(Reader rd) Nó được sử dụng để tạo ra thể hiện của

BufferedReader mà sử dụng kích thước mặcđịnh cho một bộ đệm đầu vào

BufferedReader(Reader rd, Nó được sử dụng để tạo ra thể hiện của

định cho một bộ đệm đầu vào

int read(char[] cbuf, int Nó được sử dụng để đọc các ký tự thành một

boolean markSupported() Nó được sử dụng để kiểm tra input stream có hỗ

trợ các phương thức mark() và reset() không

stream đã sẵn sàng để được đọc

đánh dấu lần cuối được gọi vào input streamnày

Trang 25

void mark(int Nó được sử dụng để đánh dấu vị trí hiện tại

tài nguyên hệ thống nào liên kết đến stream

Ví dụ về đọc file trong java với lớp BufferedReader

Trong ví dụ này, chúng ta đọc dữ liệu từ file văn bản testout.txt sử dụng lớp

Java BufferedReader

import java.io.BufferedReader;

import java.io.FileReader;

public class BufferedReaderExample {

public static void main(String args[]) throws Exception {

FileReader fr = new FileReader("D:\\testout.txt");

BufferedReader br = new BufferedReader(fr);

Trang 26

Lớp PrintWriter trong java là bản cài đặt của lớp Writer Nó được sử dụng

để ghi các định dạng đại diện của các đối tượng vào stream hướng văn bản

Khai báo của lớp PrintWriter

Dưới đây là khi báo của lớp Java.io.PrintWriter:

public class PrintWriter extends Writer

Các phương thức của lớp PrintWriter

ch)

ch, int start, int end)

PrintWriter format(String Nó được sử dụng để viết một chuỗi định dạng

chỉ định và định dạng chuỗi

Trang 27

void flush() Nó được sử dụng để xả stream.

Ví dụ về ghi file trong java với lớp PrintWriter

Hãy xem ví dụ đơn giản để ghi dữ liệu trên console và trong file văn bản

testout.txt sử dụng lớp Java PrintWriter.

import java.io.File;

import java.io.PrintWriter;

public class PrintWriterExample {

public static void main(String[] args) throws Exception {

// Dữ liệu được ghi trên Console sử dụng lớp PrintWriter

PrintWriter writer = new PrintWriter(System.out);

writer.write("VietTuts.Vn: ");

writer.flush();

writer.close();

/ Dữ liệu được ghi vào File sử dụng PrintWriter

PrintWriter writer1 = null;

writer1 = new PrintWriter(new File("D:\\testout.txt"));

writer1.write("Java, Spring, Hibernate, Android, PHP, ");

Trang 28

Serialization là một khái niệm giúp chúng ta có thể chuyển đổi trạng thái củamột Java object thành một định dạng nào đó để Java object này có thể đượclưu trữ ở đâu đó và sau đó, nó sẽ được sử dụng bởi một tiến trình khác.

Thông thường, khi sử dụng Serialization, Java object của chúng ta sẽ đượcchuyển đổi qua byte streams và chúng ta có thể lưu byte stream này trong bộnhớ, trên ổ đĩa, truyền qua mạng đến một server nào đó hoặc cũng có thể lưuchúng vào database

Và khi một tiến trình khác sử dụng một Java object đã được Serialization, nó

sẽ chuyển đổi định dạng đã Serialization về trạng thái của Java object banđầu Nhờ vậy, tiến trình đó có thể sử dụng lại Java object của chúng ta

Để cho một object có thể sử dụng Serialization được, chúng ta phải choobject của chúng ta hiện thực một interface với tên gọi là

java.io.Serializable Interface này không có bất kỳ một phương thức nào

Trang 29

23 }

Vì mình muốn sử dụng Serialization nên mình sẽ hiện

thực interface Serializable cho đối tượng Student như sau:

10 private int age;

OK, bây giờ chúng ta sẽ viết code để chuyển đổi đối tượng Student và lưu

byte streams của nó vào một tập tin nào đó xem thử nhé!

Trang 30

7 public class SerializationExample {

8

9 public static void main(String[] args) {

12 student.setName("Khanh");

14

15 // Use FileOutputStream to save the Student object into a file

16 try ( FileOutputStream fos = new FileOutputStream("E:\\student.txt");

Bây giờ, một tập tin đã được tạo và nếu bạn kiểm tra tập tin mà bạn đã lưu

đối tượng Student của chúng ta, bạn sẽ thấy nội dung giống giống như sau:

’ sr &com.huongdanjava.javaexample.Student I

ageL namet Ljava/lang/String;xp t Khanh

Vậy làm thế nào để tiến trình khác có thể sử dụng tập tin mình đã tạo trong

ví dụ trên để sử dụng, chúng ta viết code tiếp nhé!

Trang 31

16 student = (Student) oos.readObject();

Như bạn thấy trước và sau khi chuyển đổi, đối tượng Student của mình vẫn

có những thông tin mà chúng ta đã lưu trước đó

1.3.1 ObjectInputStream

Lớp ObjectInputStream trong java được sử dụng để đọc các đối tượng và

dữ liệu nguyên thủy mà được ghi bằng việc sử dụng lớp

ObjectOutputStream

Khai báo của lớp ObjectInputStream

Dưới đây là khi báo của lớp Java.io.ObjectInputStream :

public class ObjectInputStream

extends InputStream implements ObjectInput, ObjectStreamConstants

Constructor của lớp ObjectInputStream

public final Object readObject() Đọc một đối tượng từ input stream

Trang 32

Ví dụ về lớp ObjectInputStream trong java

Trong ví dụ này, chúng ta sẽ tuần tự hóa đối tượng của lớp Student Phươngthức writeObject() của lớp ObjectOutputStream cung cấp chức năng để tuần

tự hóa đối tượng Chương trình dưới đây sẽ lưu trạng thái của đối tượngtrong tệp có tên testout.txt

Tạo lớp Student.java

import java.io.Serializable;

public class Student implements Serializable

{ private static final long serialVersionUID = 1L;

private int id;

private String name;

private String address;

private int age;

public void Studet() {}

public Student(int id, String name, String address, int age) {

Trang 33

public String toString() {

return "Student@[id=" + id + " , name=" + name + ", "+ "address= " + address + ",age =" + age+ "]";}

public class ObjectInputStreamExample {

public static void main(String[] args) throws IOException {ObjectInputStream ois = null;

Trang 35

Lớp ObjectOutputStream trong java được sử dụng để ghi các kiểu dữ liệu

nguyên thuỷ và các đối tượng Java vào một OutputStream Chỉ có các đốitượng implements giao tiếp java.io.Serializable mới có thể được ghi vàostream

Khai báo của lớp ObjectOutputStream

Dưới đây là khi báo của lớp Java.io.ObjectOutputStream:

public class ObjectOutputStream

extends OutputStream implements ObjectOutput, ObjectStreamConstants

Constructor của lớp ObjectOutputStream

ObjectOutputStream(OutputStream OutputStream được chỉ định

out)

Các phương thức của lớp ObjectOutputStream

Trang 36

private static final long serialVersionUID = 1L;

private int id;

private String name;

private String address;

private int age;

public void Studet() {}

public Student(int id, String name, String address, int age) { super();

Trang 37

public void setAddress(String address)

public String toString() {

return "Student@[id=" + id + " , name=" + name + ", "

+ "address= " + address + ",age =" + age+ "]";

public class ObjectOutputStreamExample {

public static void main(String[] args) throws IOException {

ObjectOutputStream oos = null;

Trang 39

Chương 2 : Generic

1 Lý thuyết:

2.1 Generic class

Java Generics được thêm vào ngôn ngữ lập trình Java từ Java 5 Generics

trong java là một cách để xác định các kiểu cụ thể cho các lớp và phương thức trong ngữ cảnh khác nhau Nghe có vẻ hơi trừu tượng, vì vậy chúng ta

sẽ xem xét lần lượt các khái niệm và một số ví dụ cụ thể Cụ thể trong bài này chúng ta sẽ học:

 Lớp Generic trong java

 Phương thức Generic trong java

 Ký tự đại diện (?) trong Java Generics

 Sử dụng Generics trong các đối tượng Collection

 Lợi thế của Generics trong Java

2.1.1 Lớp Generic trong java

Một lớp có thể tham chiếu bất kỳ kiểu đối tượng nào được gọi là lớp

generic.

Ví dụ

Hãy xem ví dụ đơn giản sau về việc tạo và sử dụng lớp generic:

2.1.1 Tạo lớp generic MyGeneric.java:

Trong lớp trên, tham số <T> là một kiểu chung chung (bạn có thể sử dụng

một ký tự bất kỳ khác T) đại diện cho bất kỳ một kiểu cụ nào

Trang 40

Ví dụ khi bạn định nghĩa MyGeneric<Integer> tức là T = Integer, lúc này bạn có thể hình dung lớp MyGeneric có dạng như sau:

public class TestGenerics3 {

public static void main(String args[]) {

Ngày đăng: 27/12/2021, 03:24

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w