Các Phương Thức Của Lớp Inputstream

Phương thức

Bảng 3.3. Lớp Runtime

Ví dụ 3.24: Sử dụng hàm exec

class RuntimeDemo

{


public static void main(String args[])

{


Runtime r = Runtime.getRuntime(); Process p = null;

try {

p = r.exec(“calc.exe”);


}

catch(Exception e)

{

System.out.println(“Error executing calculator”);

}

}

}


Bạn có thể tham chiếu đến Runtime hiện hành thông qua phương thức Runtime.getRuntime().

Sau đó, bạn có thể chạy chương trình calc.exe và tham chiếu đến calc.exe trong đối tượngProcess.

h) Lớp System

Lớp System cung cấp các tiện ích như là, dòng vào, dòng ra chuẩn và dòng lỗi. Nó cũng cung cấp phương thức để truy cập các thuộc tính liên quan đến hệ thống Runtime của Java, và các thuộc tính môi trường khác nhau như là, phiên bản (version), đường dẫn, hay các dịch vụ, ...Các trường của lớp này là in, out, và err, các trường này tiêu biểu cho dòng vào, ra và lỗi chuẩn tương ứng.

Bảng sau mô tả các phương thức của lớp này:


Phương thức

Mục đích

exit(int)

Dừng việc thực thi, và trả về giá trị của đoạn mã. 0 cho biết có thể thoát ra một cách bình thường.

gc()

Gọi bộ phận thu thập rác.

getProperties()

Trả về thuộc tính của hệ thống thời gian chạy Java.

setProperties()

Thiết lập các thuộc tính hệ thống hiện hành.

currentTimeMillis()

Trả về thời gian hiện tại bằng mili giây (ms),

được tính từ lúc 0 giờ ngày 01 tháng 01 năm 1970.

arrayCopy(Object, int, Object, int, int)

Sao chép mảng.

Có thể bạn quan tâm!

Xem toàn bộ 267 trang tài liệu này.

Bảng 3.4. Lớp System.

Lớp System không thể tạo thể hiện (instance) được.

Ví dụ 3.22: Đọc và hiển thị một vài các thuộc tính môi trường Java.

class SystemDemo

{


public static void main(String args[])

{


System.out.println(System.getProperty(“java.class.path”)); System.out.println(System.getProperty(“java.home”)); System.out.println(System.getProperty(“java.class.version”));

System.out.println(System.getProperty(“java.specification.vendor”)); System.out.println(System.getProperty(“java.specification.version”)); System.out.println(System.getProperty(“java.vendor”)); System.out.println(System.getProperty(“java.vendor.url”)); System.out.println(System.getProperty(“java.version”)); System.out.println(System.getProperty(“java.vm.name”));

}

}


Mỗi thuộc tính cần in ra cần được cung cấp như một tham số (dạng chuỗi) đến phương thức System.getProperty(). Phương thức này sẽ trả về thông tin tương ứng và phương thức System.out.println() in ra màn hình.

Kết quả chương trình trên như sau:


Hình 3 2 Kết quả chạy ví dụ 3 22 i Lớp Class Các thể hiện của lớp này 1


Hình 3.2. Kết quả chạy ví dụ 3.22

i) Lớp Class


Các thể hiện của lớp này chứa trạng thái thời gian thực hiện của một đối tượng trong ứng dụng Java đang chạy. Điều này cho phép chúng ta truy cập thông tin về đối tượng trong thời gian chạy.

Chúng ta có thể lấy một đối tượng của lớp này, hoặc một thể hiện bằng một trong ba cách sau:

Sử dụng phương thức getClass() của đối tượng.

Sử dụng phương thức tĩnh forName() của lớp để lấy một thể hiện của lớp thông qua tên của lớp đó.

Sử dụng một đối tượng ClassLoader để nạp một lớp mới. Lớp Class không có phương thức xây dựng (constructor).

Ví dụ 3.23: Minh hoạ cách sử dụng phương thức của một lớp để truy cập thông tin của lớp đó:

interface A

{


final int id = 1;

final String name = “Diana”;

}


class B implements A

{


int deptno;

}


class ClassDemo

{

public static void main(String args[])

{


A a = new B(); B b = new B(); Class x;

x = a.getClass();

System.out.println(“a is object of type: ”+x.getName()); x= b.getClass();

System.out.println(“b is object of type: ”+x.getName()); x=x.getSuperclass();

System.out.println(x.getName()+ “is the superclass of b.”);

}

}


Kết quả chạy chương trình được mô tả như hình dưới đây:

Hình 3 3 Kết quả chạy ví dụ 3 23 j Lớp Object Lớp Object là một lớp cha của 2

Hình 3.3. Kết quả chạy ví dụ 3.23

j) Lớp Object


Lớp Object là một lớp cha của tất cả các lớp. Dù là một lớp do người dùng định nghĩa không thừa kế lại bất kỳ một lớp nào khác, theo mặc định nó thừa kế lớp Object.

Một vài các phương thức của lớp Object được biểu diễn bên dưới:


Phương thức

Mục đích

equals(Object)

So sánh đối tượng hiện tại với đối tượng khác.

finalize()

Phương thức cuối cùng. Thông thường bị định nghĩa đè ở lớp con.

notify()

Thông báo cho Thread (luồng) mà hiện thời trong trạng thái đang chờ.

notifyAll()

Thông báo tất cả các Thread (luồng) hiện hành trong trạng thái chờ.

toString()

Trả về một chuỗi đại diện cho đối tượng.

wait()

Đưa Thread (luồng) vào trạng thái chờ.

Bảng 3.5. Lớp Object.

Trong chương trình sau, chúng ta không khai báo bất kỳ lớp hoặc gói nào. Bây giờ, chúng ta có thể tạo bằng cách sử dụng phương thức equals(). Bởi vì theo mặc định lớp ObjectDemo mở rộng lớp Object.

Ví dụ 3.24: Lớp ObjectDemo

Class ObjectDemo

{


public static void main(String args[])

{


if (args[0].equals(“Aptech”))

System.out.println(“Yes, Aptech is the right choice!”);

}

}

3.2. Các dòng (Stream)

Theo thuật ngữ chung, stream là một dòng lưu chuyển. trong thuật ngữ về kỹ thuật dòng là một lộ trình mà dữ liệu được truyền trong chương trình. Một ứng dụng về các dòng ma ta đã quen thuộc đó là dòng nhập System.in.

Dòng là những ống (pipelines) để gửi và nhận thông tin trong các chương trình java. Khi một dòng dữ liệu được gửi hoặc nhận, ta tham chiếu nó như đang “ghi” và “đọc” một dòng tương ứng. Khi một dòng được đọc hay ghi, các luồng khác bị có nhu cầu đọc/ghi dòng đó đều phải tạm dừng. Nếu có một lỗi xảy ra khi đọc hay ghi dòng, một ngoại lệ kiểu IOException được tạo ra. Do vậy, các câu lệnh thao tác dòng phải bao gồm khối try-catch.

Lớp „java.lang.System‟ định nghĩa các dòng nhập và xuất chuẩn. chúng là các lớp chính của các dòng byte mà java cung cấp. Chúng ta cũng đã sử dụng các dòng xuất để xuất dữ liệu và hiển thị kết quả trên màn hình. Dòng vào/ra bao gồm:

Lớp System.out: Dòng xuất chuẩn dùng để hiển thị kết quả trên màn hình.

Lớp System.in: Dòng nhập chuẩn thường đến từ bàn phím và được dùng để đọc các ký tự dữ liệu.

Lớp System.err: Đây là dòng lỗi chuẩn.

Các lớp „InputStream‟ và „OutputStream‟ cung cấp nhiều khả năng vào/ra khác nhau. Cả hai lớp này có các lớp thừa kế để thực hiện I/O thông qua các vùng bộ nhớ đệm, các tập tin và ống (pipeline). Các lớp con của lớp InputStream thực hiện vào, trong khi các lớp con của lớp OutputStream thực hiện ra.

3.3. Gói Java.io

Các luồng hệ thống rất có ích. Tuy nhiên, chúng không đủ mạnh để dùng khi ứng phó với I/O thực tế. Gói java.io phải được nhập khẩu vì mục đích này. Chúng ta sẽ thảo luận tìm hiểu về các lớp thuộc gói java.io.

3.3.1. Lớp InputStream

Lớp InputStream là một lớp trừu tượng. Nó định nghĩa cách thức nhận dữ liệu. Điểm quan trọng không nằm ở chỗ dữ liệu đến từ đâu, mà là khả năng truy cập. Lớp InputStream cung cấp một số phương thức để đọc và dùng các dòng dữ liệu để làm đầu vào. Các phương thức này giúp ta tạo, đọc và xử lý các dòng đầu vào. Các phương thức được hiện trong bảng sau:

Mô tả

read()

Đọc các byte dữ liệu từ một dòng. Nếu như không có byte dữ liệu nào, nó phải chờ. Khi một phương thức phải chờ, các luồng đang thực hiện phải tạm dừng cho đến khi có dữ liệu.

read (byte [])

Trả về số byte đọc được hay „-1‟ nếu như đã đọc đến cuối dòng. Nó gây ra ngoại lệ IOException nếu có lỗi xảy ra.

read (byte [], int, int)

Nó cũng đọc vào một mảng byte. Nó trả về số byte thực sự đọc được cho đến khi kết thúc dòng. Nó gây ra ngoại lệ IOException nếu lỗi xảy ra.

available()

Phương pháp này trả về số lượng byte có thể đọc được mà không phải chờ. Nó trả về số byte hiện tại có trong dòng. Nó không phải là phương thức tin cậy để thực hiện tiến trình xử lý đầu vào.

close()

Phương thức này đóng dòng. Nó dùng để giải phóng mọi tài nguyên dòng đã sử dụng. Luôn luôn đóng dòng để chắc chắn rằng dòng xử lý được kết thúc. Nó gây ra ngoại lệ IOException nếu lỗi xảy ra.

mark()

Đánh dấu vị trí hiện tại của dòng.

markSupported()

Trả về giá trị boolean chỉ ra rằng dòng có hỗ trợ các khả năng mark và reset hay không. Nó trả về True nếu dòng hỗ trợ ngược lại trả về False.

reset()

Phương thức này định vị lại dòng theo vị trí được đánh lần cuối cùng. Nó gây ra ngoại lệ IOException nếu lỗi xảy ra.

skip()

Phương thức này bỏ qua „n‟ byte dòng vào. ‟-n‟ chỉ định số byte được bỏ qua. Nó gây ra ngoại lệ IOException nếu lỗi xảy ra. Phương thức này sử dụng để di chuyển tới vị trí đặc biệt bên trong dòng vào.

Tên phương thức

Bảng 3.6. Các phương thức của lớp InputStream

3.3.2. Lớp OutputStream

Lớp OutputStream cũng là lớp trừu tượng. Nó định nghĩa cách ghi các kết xuất đến dòng. Nó cung cấp một tập các phương thức trợ giúp tạo ra, ghi và xử lý kết xuất các dòng. Các phương thức bao gồm:

Tên phương thức

Mô tả

write(int)

Phương thức này ghi một byte

write(byte[])

Phương thức này phong tỏa cho đến khi một byte được ghi. dòng phải chờ cho đến khi tác vụ ghi hoàn tất. Nó

gây ra ngoại lệ IOException nếu lỗi xảy ra.

write(byte[],int,int)

Phương thức này ghi mảng các byte. Lớp OutputStream định nghĩa ba dạng khác nhau của phương thức để có thể ghi một byte riêng lẻ, một mảng các byte, hay một đoạn của một mảng byte.

flush()

Phương thức này xóa sạch dòng.

Đệm dữ liệu được ghi ra dòng. Nó kích hoạt IOException nếu lỗi xảy ra.

close()

Phương thức đóng dòng.

Nó được dùng để giải phóng mọi tài nguyên gắn với dòng. Nó kích hoạt IOException nếu lỗi xảy ra.

Bảng 3.7. Các phương thức lớp OutputStream

3.3.3. Vào ra mảng byte

Các lớp „ByteArrayInputStream‟ và „ByteArrayOutputStream‟ sử dụng các bộ đệm. Không cần thiết phải dùng chúng cùng với nhau.

Lớp ByteArrayInputStream

Lớp này tạo dòng đầu vào từ bộ đệm, đó là mảng các byte. Lớp này không hỗ trợ các phương thức mới. Ngược lại nó định nghĩa đè các phương thức của lớp InputStream như „read() „, „skip()‟, „available()‟ và „reset()‟.

Lớp ByteArrayOutputStream

Lớp này tạo ra dòng ra trên một mảng các byte. Nó cũng cung cấp các khả năng cho phép mảng ra tăng trưởng nhằm mục đích tăng kích thước. Lớp này cũng cung cấp thêm các phương thức „toByteArrray()‟ và „toString()‟. Chúng được dùng để chuyển đổi dòng thành một mảng byte hay chuỗi.

Ngày đăng: 15/07/2022