SlideShare a Scribd company logo
1 of 42
TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TP.HCM 
KHOA CÔNG NGHỆ THÔNG TIN 
INPUT – OUTPUT 
TRONG JAVA 
GVHD: Th.S Trương Thị Ngọc Phượng 
Nhóm 1: 
1.Lê Đức Cảnh – 10910018 
2.Bùi Tuấn Anh – 10910032 
3.Hoàng Thanh Bình – 10910034 
4.Trịnh Xuân Bình - 11110013
Phân công việc 
STT Họ và tên MSSV Công việc 
1 Bùi Tuấn Anh 10910032 Text File 
2 Hoàng Thanh Bình 10910034 Text File 
3 Lê Đức Cảnh 10910018 Binary File 
4 Trịnh Xuân Bình 11110013 Binary File
Nội dung 
I- Giới thiệu. 
II- Stream. 
1. Các loại Stream trong Java 
2. Phân cấp các lớp nhập/xuất theo byte vật lý 
3. Phân cấp các lớp nhập/xuất theo byte ký tự 
4. Phân cấp các lớp nhập/xuất theo File 
III. Tập tin văn bản và tập tin nhị phân 
1. Tập tin văn bản(Text File) 
2. Tập tin nhị phân(Binary File) 
IV- Tóm tắt
I. Giới thiệu 
Nhập dữ liệu(Input) là tác vụ đưa các dữ liệu cụ 
thể vào cho biến trong chương trình. Như vậy, 
phải có một nguồn chứa dữ liệu (bàn phím, tập 
tin, biến khác). 
Xuất dữ liệu là tác vụ đưa trị cụ thể của biến 
trong chương trình ra một nơi chứa (màn hình 
hay file hay biến khác). 
Nhập/xuất dữ liệu là các phương tiện mà 
chương trình tương tác với user và thường 
không thể thiếu trong đa số các ứng dụng.
II- Stream 
Stream là một đối tượng cho phép dòng chảy 
dữ liệu giữa chương trình của mình và một số 
thiết bị nhập xuất hoặc một số tập tin. 
Dòng dữ liệu đi vào chương trình được gọi là 
luồng nhập (input stream). 
Dòng dữ liệu từ chương trình ra ngoài gọi 
luồng xuất (output stream).
1. Các loại stream trong Java
2. Phân cấp các lớp nhập theo byte vật lý
2. Phân cấp các lớp xuất theo byte vật lý
3. Phân cấp các lớp nhập theo ký tự 
3. Phân cấp các lớp xuất theo ký tự
4. Phân cấp các lớp thao tác file 
với hệ điều hành 
Lớp File giúp truy xuất các thuộc tính của 1 
file/thư mục. 
Lớp FileDescriptor: Giúp đồng bộ việc truy xuất 
file. 
Lớp RandomAccessFile giúp đọc/ghi file với dữ 
liệu thuộc kiểu cơ bản
III. Tập tin văn bản và tập tin nhị phân 
(Text files and binary files) 
Tập tin văn bản là các tập tin có chứa chuỗi ký 
tự khi xem trong một trình soạn thảo văn bản 
hoặc đọc bởi một chương trình. 
Tập tin văn bản đôi khi còn được gọi là tập tin 
ASCII vì chúng chứa dữ liệu được mã hóa bằng 
cách sử dụng mã ASCII. 
Các tập tin có nội dung phải được xử lý như 
chuỗi các số nhị phân được gọi là tập tin nhị 
phân.
1.Tập tin văn bản (Text files) 
Ghi vào tập tin văn bản 
Phụ thêm vào tập tin văn bản 
Đọc tập tin văn bản 
Sử dụng Scanner 
Sử dụng BufferedReader 
Tên đường dẫn 
Lời gọi hàm lồng nhau 
System.in, System.out và System.err
1.1. Ghi vào tập tin văn bản 
Mở tập tin văn bản để viết ra 
Cú pháp: 
PrintWriter Output_Stream_Name; 
Output_Stream_Name = 
newPrintWriter(newFileOutputStream(File_Name)); 
Đặt tên tập tin 
Tên file theo OS 
Một tập tin có 2 tên 
IOException 
Đóng tập tin: cú pháp Stream_Object.close();
1.2. Phụ thêm vào tập tin văn bản 
Output_Stream_Name= 
new PrintWriter( 
new FileOutputStream(File_Name, true or 
false));
1.3. Đọc tập tin văn bản sử dụng Scanner 
Cú pháp 
Scanner Stream_Object= 
new Scanner(new FileInputStream(File_Name)); 
Demo
1.4. Lớp BufferedReader và BufferedWriter 
Dòng nhập/xuất ký tự có sử dụng bộ đệm 
Giúp nhập xuất dữ liệu theo dạng ký tự, dòng 
(line) ký tự. 
Method BufferedReader
Minh họa 
Demo
1.5. Lớp File 
Làm việc trực tiếp với các tập tin: 
 Tạo, xóa, đổi tên tập tin 
 Lấy thông tin đường dẫn 
Kiểm tra sự tồn tại của một tập tin/ thư mục.
Method File
Minh họa truy xuất thuộc tính File 
Demo
Minh họa truy xuất thư mục File 
Demo
1.6. Gói java.lang và lớp System 
Gói java.lang là gói cơ bản của ngôn ngữ Java 
(language). 
Gói này chứa khai báo các lớp wrapper như 
Boolean, Char, Integer,... 
Có lớp System mô tả cho hệ thống
Gói java.lang 
subclasses:
public final class System extends Object 
Data 
static PrintStream err :mô tả thiết bị xuất lỗi 
chuẩn (màn hình) 
static PrintStream out :mô tả thiết bị xuất chuẩn 
(màn hình) 
static PrintStream in :mô tả thiết bị nhập chuẩn 
(bàn phím) 
Methods 
Các hành vi của lớp System là các hành vi mức 
hệ thống như truy xuất thời gian, truy xuất các 
thiết lập hệ thống (trong Config.sys), thoát JVM, 
nạp 1 lớp trong 1 file, nạp 1 thư viện, kết thúc 1 
object, thiết lập thiết bị nhập xuất hệ thống khác 
với các thiết bị xuất nhập chuẩn, lấy/thiết lập cơ 
chế bảo mật…
public final class System extends Object .... 
Các method thường dùng: 
static long currentTimeMillis() lấy giờ hệ thống 
theo millisec so với 12 giờ đêm ngày 1/1/1970 
static long nanoTime() lấy giờ hệ thống theo 
nanosec (chỉ có từ Java 1.5.0) 
static void exit(int status) kết thúc JVM 
static void gc(void) : gọi trình gom rác (garbage 
collector) 
static Properties getProperties(void) lấy thiết lập 
hệ thống (trong Config.sys)
Thí dụ về truy xuất thông tin hệ thống 
Demo
2. Tập tin nhị phân (Binary File) 
- Binary Files là một tập tin máy tính mà có thể chứa 
bất kỳ loại dữ liệu, mã hóa dưới dạng nhị phân để 
lưu trữ máy tính và mục đích chế biến nhằm mục 
đích xử lý để cho các chương trình đọc. 
- Các luồng dành cho xử lý binary file là 
ObjectInputStream và ObjectOutputStream. Các 
luồng này có thể tự động chuyển số và kí tự thành 
byte và chứa trong binary file.
2.1. Viết dữ liệu đơn giản với Binary file 
DataInputStream và DataOutputStream 
DataInput interface được dùng 
để đọc các byte nhị phân từ 1 
dòng byte vật lý (InputStream) và 
xây dựng lại các byte này thành 
các dữ liệu có kiểu cơ bản 
(primitive data types). Inteface 
này cũng chuyển đổi chuỗi dạng 
UTF-8 có sửa đổi thành dữ liệu 
dạng String . 
DataOutput interface lại làm 
ngược lại những gì mà 
DataInput interface đã làm.
ObjectInputStream và ObjectOutputStream 
Là 2 interface con của 
DataInput và DataOutput 
interfaces cho việc nhập 
xuất đối tượng.
Object Input Stream
Object Output Stream 
Demo
2.2. Unicode & UTF 
- Java sử dụng 2 dạng trình bày của văn bản 
+ Unicode dùng biểu diễn ký tự & chuỗi trong bộ 
nhớ 
+ UTF dùng cho nhập xuất 
- Unicode dùng 16 bit để biểu diễn 1 ký tự. 
- UTF 
+ Viết tắt của “UCS Transformation Format,” 
+ UCS: “Universal Character Set.” 
+ Dạng nén của ký tự Unicode16-bit. 
+ UTF mã hoá các ký tự với số bit đủ để biểu 
diễn ký tự
2.3. Lớp RandomAccessFile 
- Truy xuất ngẫu nhiên, di chuyển (seek) đến 1 vị trí tuỳ ý 
- Đọc hoặc ghi lượng dữ liệu tuỳ ý. 
- Hỗ trợ đọc ghi dữ liệu theo kiểu nguyên thuỷ 
- Mỗi thao tác đọc ghi tự động di chuyển con trỏ đến vị trí 
mới 
- long length() throws IOException: kích thước= bytes. 
- void seek(long position) throws IOException: 
- Di chuyển tương đối so với đầu file
- RandomAccessFile không dẫn xuất từ 
InputStream hay OutputStream mà nó hiện thực các 
interface DataInput, DataOutput (có định nghĩa các 
phương thức I/O cơ bản). 
- RandomAccessFile hỗ trợ vấn đề định vị con trỏ 
file bên trong một file dùng phương thức seek(long 
newPos).
Lớp RandomAccessFile... 
Constructors 
RandomAccessFile(File f, String mode) 
RandomAccessFile(String Filename, String mode) 
mode Ý nghĩa 
"r" Mở file chỉ để đọc , có thể gây lỗi IOException. 
"rw" Mở file đổ đọc + ghi. Nếu file chưa có thì sẽ tạo mới file này. 
"rws" Mở file để đọc + ghi. Nếu có hiệu chỉnh nội dung hay dữ liệu 
mô tả file (metadata) thì đòi hỏi phải được ghi đồng bộ. 
"rwd" Mở file để đọc + ghi và mỗi khi có hiệu chỉnh nội dung file thì 
phải được đồng bộ.
Lớp RandomAccessFile... 
RandomAccessFile Method Summary 
void close() – Đóng file. 
FileChannel getChannel() Lấy đối tượng FileChannel kết hợp với . 
FileDescriptor getFD() Lấy FileDescriptor. 
long getFilePointer() - Lấy vị trí truy xuất hiện hành. 
long length() - Lấy đ9ộ dài file. 
int 
read() Đọc 1 byte. 
void 
write(int b) ghi 1 byte vào vị trí hiện hành 
int 
void 
read(byte[] b) Đọc 1 mảng byte- trả về số byte đọc được. 
write(byte[] b) ghi mảng b 
int 
void 
read(byte[] b, int off, int len) 
write(byte[] b, int off, int len) Đọc/ghi len byte đưa vào mảng b từ vị trí off, trả về số byte đọc được. 
boolean 
void 
readBoolean() Đọc/ghi 1 trị boolean. 
writeBoolean (boolean v) 
byte 
void 
readByte() Đọc.ghi 1 trị 8 bit có dấu. 
writeByte ( int x) 
char 
void 
readChar() - Đọc 1 ký tự Unicode . 
writeChar( int v) ghi 1 ký tự 2 byte, byte cao ghi trước 
double 
void 
readDouble() Đọc/ ghi 1 trị double. 
writeDouble ( double x) – ghi dạng longbits 8 bytes
Lớp RandomAccessFile... 
float 
void 
readFloat() Đọc/ ghi 1 trị float. 
writeFloat( float x) ghi dạng intbit 4 bytes 
void readFully(byte[] b) Đọc ra cả 1 mảng byte từ vị trí hiện hành. 
void readFully(byte[] b, int off, int len) Đọc len byte từ vị trí hiện hành đưa vào vị trí off của mảng b. 
int 
void 
readInt() Đọc 1 số integercó dấu 32 bit . 
writeInt(int x) 
String readLine() Đọc 1 dòng kể từ vị trí hiện hành. 
long 
void 
readLong() Đọc 1 số long có dấu (64 bit). 
writeLong(long x) , 8 byte, byte cao ghi trước 
short 
void 
readShort() Đọc 1 số short có dấu (16 bit). 
writeShort(short x) 
int readUnsignedByte() Đọc 1 byte không dấu (8 bit). 
int readUnsignedShort() Đọc 1 số short không dấu (16 bit). 
String 
void 
readUTF() Đọc 1 chuỗi. 
writeUTF(String S) ghi chuỗi dạng mã UTF-8 độc lập máy chủ 
void seek(long pos) Nhẩy đến vị trí pos từ đầu file. 
void setLength(long newLength) ấn định độ dài file. 
int skipBytes(int n) Bỏ qua n bytes. 
void writeBytes(String s) Ghi chuỗi dạng nhóm các bytes. 
void writeChars(String s) Ghi chuỗi dạng nhóm ký tự.
Minh họa lớp RandomAccessFile 
Demo
2.4. Binary I/O của Object 
Các lớp chỉ cần implement interface Serializable. 
class của object phải implements interface 
Serializable để thống nhất cách đọc ghi object của 
hai tác vụ readObject và writeObject. 
Việc đồng bộ cơ chế đọc ghi đối tượng thông 
qua hành vi toString(), tuần tự hóa dữ liệu của đối 
tượng. 
Demo
2.5. The Serializable interface 
- Khai báo implements Serializable để tạo khả 
năng tuần tự hóa cho các đối tượng của lớp 
- Serializablelà 1 interface phân loại, (tag interface) 
+ public interface Serializable { } 
+ Không có phương thức nào 
Ví dụ: public classPerson implements Serializable 
{}
2.6. Mảng Object trong binary file 
Một mảng là một đối tượng và do đó là một tham 
số cho writeObject. Một mảng nguyên có thể được 
lưu vào binary file sử dụng writeObject và đọc sau 
đó sử dụng readObject. Khi làm như vậy, nếu 
mảng có kiểu cơ sở là một lớp thì lớp đó phải là 
Serializable. Điều này có nghĩa là nếu lưu trữ tất 
cả dữ liệu cho một lớp Serializable trong một 
mảng đơn, sau đó có thể xuất tất cả dữ liệu vào 
một binary file với một sự dẫn ra của writeObject. 
Demo
Io trong java

More Related Content

What's hot

Bai07 bo nho
Bai07   bo nhoBai07   bo nho
Bai07 bo nhoVũ Sang
 
Hệ điều hành (chương 4)
Hệ điều hành (chương 4)Hệ điều hành (chương 4)
Hệ điều hành (chương 4)realpotter
 
Hệ điều hành (chương 1)
Hệ điều hành (chương 1)Hệ điều hành (chương 1)
Hệ điều hành (chương 1)realpotter
 
Tong hop cau hoi trac nghiem hdh
Tong hop cau hoi trac nghiem hdhTong hop cau hoi trac nghiem hdh
Tong hop cau hoi trac nghiem hdhHoat Thai Van
 
Hướng dẫn deobfuscate DotnetPatcher 3.1 - Bài dịch
Hướng dẫn deobfuscate DotnetPatcher 3.1 - Bài dịchHướng dẫn deobfuscate DotnetPatcher 3.1 - Bài dịch
Hướng dẫn deobfuscate DotnetPatcher 3.1 - Bài dịchLevis Nickaster
 
Reverse Engineering .NET - Advanced Patching, Playing with IL
Reverse Engineering .NET - Advanced Patching, Playing with ILReverse Engineering .NET - Advanced Patching, Playing with IL
Reverse Engineering .NET - Advanced Patching, Playing with ILLevis Nickaster
 
Giao trinh he_dieu_hanh_tech24_vn[bookbooming.com]
Giao trinh he_dieu_hanh_tech24_vn[bookbooming.com]Giao trinh he_dieu_hanh_tech24_vn[bookbooming.com]
Giao trinh he_dieu_hanh_tech24_vn[bookbooming.com]bookbooming1
 
Phân tích ConfuserEX - Invalid Metadata (bài dịch)
Phân tích ConfuserEX - Invalid Metadata (bài dịch)Phân tích ConfuserEX - Invalid Metadata (bài dịch)
Phân tích ConfuserEX - Invalid Metadata (bài dịch)Levis Nickaster
 
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)Levis Nickaster
 
Hacking de4dot for fun - Bài dịch
Hacking de4dot for fun - Bài dịchHacking de4dot for fun - Bài dịch
Hacking de4dot for fun - Bài dịchLevis Nickaster
 
Trình bày cơ chế nhập / xuất của hệ thống vào ra dữ liệu
Trình bày cơ chế nhập / xuất của hệ thống vào ra dữ liệu Trình bày cơ chế nhập / xuất của hệ thống vào ra dữ liệu
Trình bày cơ chế nhập / xuất của hệ thống vào ra dữ liệu Mr. Cao
 
đề Cương ôn tập
đề Cương ôn tậpđề Cương ôn tập
đề Cương ôn tậphuynguyenvan19
 
Hệ điều hành (chương 5)
Hệ điều hành (chương 5)Hệ điều hành (chương 5)
Hệ điều hành (chương 5)realpotter
 
Bài giảng Hệ điều hành
Bài giảng Hệ điều hànhBài giảng Hệ điều hành
Bài giảng Hệ điều hànhvungoclap
 
Hướng dẫn tạo Loader trong .NET - bản dịch
Hướng dẫn tạo Loader trong .NET - bản dịchHướng dẫn tạo Loader trong .NET - bản dịch
Hướng dẫn tạo Loader trong .NET - bản dịchLevis Nickaster
 

What's hot (20)

Bai07 bo nho
Bai07   bo nhoBai07   bo nho
Bai07 bo nho
 
Hệ điều hành (chương 4)
Hệ điều hành (chương 4)Hệ điều hành (chương 4)
Hệ điều hành (chương 4)
 
Hệ điều hành (chương 1)
Hệ điều hành (chương 1)Hệ điều hành (chương 1)
Hệ điều hành (chương 1)
 
Tong hop cau hoi trac nghiem hdh
Tong hop cau hoi trac nghiem hdhTong hop cau hoi trac nghiem hdh
Tong hop cau hoi trac nghiem hdh
 
Hướng dẫn deobfuscate DotnetPatcher 3.1 - Bài dịch
Hướng dẫn deobfuscate DotnetPatcher 3.1 - Bài dịchHướng dẫn deobfuscate DotnetPatcher 3.1 - Bài dịch
Hướng dẫn deobfuscate DotnetPatcher 3.1 - Bài dịch
 
Linux+04
Linux+04Linux+04
Linux+04
 
Reverse Engineering .NET - Advanced Patching, Playing with IL
Reverse Engineering .NET - Advanced Patching, Playing with ILReverse Engineering .NET - Advanced Patching, Playing with IL
Reverse Engineering .NET - Advanced Patching, Playing with IL
 
Linux+03
Linux+03Linux+03
Linux+03
 
Giao trinh he_dieu_hanh_tech24_vn[bookbooming.com]
Giao trinh he_dieu_hanh_tech24_vn[bookbooming.com]Giao trinh he_dieu_hanh_tech24_vn[bookbooming.com]
Giao trinh he_dieu_hanh_tech24_vn[bookbooming.com]
 
HDH
HDHHDH
HDH
 
Phân tích ConfuserEX - Invalid Metadata (bài dịch)
Phân tích ConfuserEX - Invalid Metadata (bài dịch)Phân tích ConfuserEX - Invalid Metadata (bài dịch)
Phân tích ConfuserEX - Invalid Metadata (bài dịch)
 
File
FileFile
File
 
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)
 
Hacking de4dot for fun - Bài dịch
Hacking de4dot for fun - Bài dịchHacking de4dot for fun - Bài dịch
Hacking de4dot for fun - Bài dịch
 
Trình bày cơ chế nhập / xuất của hệ thống vào ra dữ liệu
Trình bày cơ chế nhập / xuất của hệ thống vào ra dữ liệu Trình bày cơ chế nhập / xuất của hệ thống vào ra dữ liệu
Trình bày cơ chế nhập / xuất của hệ thống vào ra dữ liệu
 
đề Cương ôn tập
đề Cương ôn tậpđề Cương ôn tập
đề Cương ôn tập
 
Hệ điều hành (chương 5)
Hệ điều hành (chương 5)Hệ điều hành (chương 5)
Hệ điều hành (chương 5)
 
Bài giảng Hệ điều hành
Bài giảng Hệ điều hànhBài giảng Hệ điều hành
Bài giảng Hệ điều hành
 
Hướng dẫn tạo Loader trong .NET - bản dịch
Hướng dẫn tạo Loader trong .NET - bản dịchHướng dẫn tạo Loader trong .NET - bản dịch
Hướng dẫn tạo Loader trong .NET - bản dịch
 
Tùy biến Confuser
Tùy biến ConfuserTùy biến Confuser
Tùy biến Confuser
 

Viewers also liked

συναυλια
συναυλιασυναυλια
συναυλιαdipshare
 
2014 China's Evolving Tea Retail
2014 China's Evolving Tea Retail2014 China's Evolving Tea Retail
2014 China's Evolving Tea RetailSi Chen
 
Maliandao Tea Market
Maliandao Tea MarketMaliandao Tea Market
Maliandao Tea MarketSi Chen
 
Social Media: A Useful Tool for Patient-centered Outcomes Research?
Social Media: A Useful Tool for Patient-centered Outcomes Research?Social Media: A Useful Tool for Patient-centered Outcomes Research?
Social Media: A Useful Tool for Patient-centered Outcomes Research?Joyce Lee
 
Medical Doctor, Maker Designer?
Medical Doctor, Maker Designer? Medical Doctor, Maker Designer?
Medical Doctor, Maker Designer? Joyce Lee
 
The Networked Public Physician: Will you take the plunge?
The Networked Public Physician: Will you take the plunge?The Networked Public Physician: Will you take the plunge?
The Networked Public Physician: Will you take the plunge?Joyce Lee
 
Arise awake rasbihari
Arise awake rasbihariArise awake rasbihari
Arise awake rasbihariRas Das
 
Profesi kependidikan
Profesi kependidikanProfesi kependidikan
Profesi kependidikanLeo Da Mees
 
Population growth and Natural resources
Population growth and Natural resourcesPopulation growth and Natural resources
Population growth and Natural resourcesSagar Divetiya
 
Population growth and Natural resources
Population growth and Natural resourcesPopulation growth and Natural resources
Population growth and Natural resourcesSagar Divetiya
 
Sagar Project Report (2)
Sagar Project Report (2)Sagar Project Report (2)
Sagar Project Report (2)Sagar Divetiya
 
Microbial fuel cell advanced
Microbial fuel cell advancedMicrobial fuel cell advanced
Microbial fuel cell advancedSagar Divetiya
 

Viewers also liked (14)

συναυλια
συναυλιασυναυλια
συναυλια
 
2014 China's Evolving Tea Retail
2014 China's Evolving Tea Retail2014 China's Evolving Tea Retail
2014 China's Evolving Tea Retail
 
Maliandao Tea Market
Maliandao Tea MarketMaliandao Tea Market
Maliandao Tea Market
 
Social Media: A Useful Tool for Patient-centered Outcomes Research?
Social Media: A Useful Tool for Patient-centered Outcomes Research?Social Media: A Useful Tool for Patient-centered Outcomes Research?
Social Media: A Useful Tool for Patient-centered Outcomes Research?
 
Medical Doctor, Maker Designer?
Medical Doctor, Maker Designer? Medical Doctor, Maker Designer?
Medical Doctor, Maker Designer?
 
The Networked Public Physician: Will you take the plunge?
The Networked Public Physician: Will you take the plunge?The Networked Public Physician: Will you take the plunge?
The Networked Public Physician: Will you take the plunge?
 
Arise awake rasbihari
Arise awake rasbihariArise awake rasbihari
Arise awake rasbihari
 
Profesi kependidikan
Profesi kependidikanProfesi kependidikan
Profesi kependidikan
 
0 Training report
0 Training report0 Training report
0 Training report
 
Population growth and Natural resources
Population growth and Natural resourcesPopulation growth and Natural resources
Population growth and Natural resources
 
Population growth and Natural resources
Population growth and Natural resourcesPopulation growth and Natural resources
Population growth and Natural resources
 
Sagar Project Report (2)
Sagar Project Report (2)Sagar Project Report (2)
Sagar Project Report (2)
 
Microbial fuel cell advanced
Microbial fuel cell advancedMicrobial fuel cell advanced
Microbial fuel cell advanced
 
Eye contact
Eye contactEye contact
Eye contact
 

Similar to Io trong java

Oop unit 11 input và output
Oop unit 11 input và outputOop unit 11 input và output
Oop unit 11 input và outputTráng Hà Viết
 
Core java 9
Core java 9Core java 9
Core java 9. .
 
Phan 2 chuong 10 (tap tin)
Phan 2   chuong 10 (tap tin)Phan 2   chuong 10 (tap tin)
Phan 2 chuong 10 (tap tin)Trần Văn Nam
 
6 - Lập trình C++ cơ bản_print.pdf
6 - Lập trình C++ cơ bản_print.pdf6 - Lập trình C++ cơ bản_print.pdf
6 - Lập trình C++ cơ bản_print.pdfSonNguyen642431
 
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#An Nguyen
 
209 008 ky thuat truy xuat file ini
209 008 ky thuat truy xuat file ini209 008 ky thuat truy xuat file ini
209 008 ky thuat truy xuat file initraducanh
 
Python moi
Python moiPython moi
Python moiDÉp LÊ
 
DoThanhNghi2016_Python.pdf
DoThanhNghi2016_Python.pdfDoThanhNghi2016_Python.pdf
DoThanhNghi2016_Python.pdfTamDo58
 
Bai Thuc hanh Tin học cơ sở nhom Kinh te-update.docx
Bai Thuc hanh Tin học cơ sở nhom Kinh te-update.docxBai Thuc hanh Tin học cơ sở nhom Kinh te-update.docx
Bai Thuc hanh Tin học cơ sở nhom Kinh te-update.docxCuongLe893252
 
Giáo án FOXPRO.doc
Giáo án FOXPRO.docGiáo án FOXPRO.doc
Giáo án FOXPRO.docVanDangthuy
 

Similar to Io trong java (20)

Oop unit 11 input và output
Oop unit 11 input và outputOop unit 11 input và output
Oop unit 11 input và output
 
Bài tập thực hành C#
Bài tập thực hành C#Bài tập thực hành C#
Bài tập thực hành C#
 
Session 21
Session 21Session 21
Session 21
 
Session 21
Session 21Session 21
Session 21
 
Huong dan thao_tac_file
Huong dan thao_tac_fileHuong dan thao_tac_file
Huong dan thao_tac_file
 
Core java 9
Core java 9Core java 9
Core java 9
 
Phan 2 chuong 10 (tap tin)
Phan 2   chuong 10 (tap tin)Phan 2   chuong 10 (tap tin)
Phan 2 chuong 10 (tap tin)
 
File trong c_
File trong c_File trong c_
File trong c_
 
3 he thong-file
3 he thong-file3 he thong-file
3 he thong-file
 
3 he thong-file
3 he thong-file3 he thong-file
3 he thong-file
 
3 he thong-file
3 he thong-file3 he thong-file
3 he thong-file
 
6 - Lập trình C++ cơ bản_print.pdf
6 - Lập trình C++ cơ bản_print.pdf6 - Lập trình C++ cơ bản_print.pdf
6 - Lập trình C++ cơ bản_print.pdf
 
On thitotnghiep
On thitotnghiepOn thitotnghiep
On thitotnghiep
 
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
 
209 008 ky thuat truy xuat file ini
209 008 ky thuat truy xuat file ini209 008 ky thuat truy xuat file ini
209 008 ky thuat truy xuat file ini
 
Python moi
Python moiPython moi
Python moi
 
DoThanhNghi2016_Python.pdf
DoThanhNghi2016_Python.pdfDoThanhNghi2016_Python.pdf
DoThanhNghi2016_Python.pdf
 
Bai Thuc hanh Tin học cơ sở nhom Kinh te-update.docx
Bai Thuc hanh Tin học cơ sở nhom Kinh te-update.docxBai Thuc hanh Tin học cơ sở nhom Kinh te-update.docx
Bai Thuc hanh Tin học cơ sở nhom Kinh te-update.docx
 
Chapter07 io
Chapter07 ioChapter07 io
Chapter07 io
 
Giáo án FOXPRO.doc
Giáo án FOXPRO.docGiáo án FOXPRO.doc
Giáo án FOXPRO.doc
 

Io trong java

  • 1. TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TP.HCM KHOA CÔNG NGHỆ THÔNG TIN INPUT – OUTPUT TRONG JAVA GVHD: Th.S Trương Thị Ngọc Phượng Nhóm 1: 1.Lê Đức Cảnh – 10910018 2.Bùi Tuấn Anh – 10910032 3.Hoàng Thanh Bình – 10910034 4.Trịnh Xuân Bình - 11110013
  • 2. Phân công việc STT Họ và tên MSSV Công việc 1 Bùi Tuấn Anh 10910032 Text File 2 Hoàng Thanh Bình 10910034 Text File 3 Lê Đức Cảnh 10910018 Binary File 4 Trịnh Xuân Bình 11110013 Binary File
  • 3. Nội dung I- Giới thiệu. II- Stream. 1. Các loại Stream trong Java 2. Phân cấp các lớp nhập/xuất theo byte vật lý 3. Phân cấp các lớp nhập/xuất theo byte ký tự 4. Phân cấp các lớp nhập/xuất theo File III. Tập tin văn bản và tập tin nhị phân 1. Tập tin văn bản(Text File) 2. Tập tin nhị phân(Binary File) IV- Tóm tắt
  • 4. I. Giới thiệu Nhập dữ liệu(Input) là tác vụ đưa các dữ liệu cụ thể vào cho biến trong chương trình. Như vậy, phải có một nguồn chứa dữ liệu (bàn phím, tập tin, biến khác). Xuất dữ liệu là tác vụ đưa trị cụ thể của biến trong chương trình ra một nơi chứa (màn hình hay file hay biến khác). Nhập/xuất dữ liệu là các phương tiện mà chương trình tương tác với user và thường không thể thiếu trong đa số các ứng dụng.
  • 5. II- Stream Stream là một đối tượng cho phép dòng chảy dữ liệu giữa chương trình của mình và một số thiết bị nhập xuất hoặc một số tập tin. Dòng dữ liệu đi vào chương trình được gọi là luồng nhập (input stream). Dòng dữ liệu từ chương trình ra ngoài gọi luồng xuất (output stream).
  • 6. 1. Các loại stream trong Java
  • 7. 2. Phân cấp các lớp nhập theo byte vật lý
  • 8. 2. Phân cấp các lớp xuất theo byte vật lý
  • 9. 3. Phân cấp các lớp nhập theo ký tự 3. Phân cấp các lớp xuất theo ký tự
  • 10. 4. Phân cấp các lớp thao tác file với hệ điều hành Lớp File giúp truy xuất các thuộc tính của 1 file/thư mục. Lớp FileDescriptor: Giúp đồng bộ việc truy xuất file. Lớp RandomAccessFile giúp đọc/ghi file với dữ liệu thuộc kiểu cơ bản
  • 11. III. Tập tin văn bản và tập tin nhị phân (Text files and binary files) Tập tin văn bản là các tập tin có chứa chuỗi ký tự khi xem trong một trình soạn thảo văn bản hoặc đọc bởi một chương trình. Tập tin văn bản đôi khi còn được gọi là tập tin ASCII vì chúng chứa dữ liệu được mã hóa bằng cách sử dụng mã ASCII. Các tập tin có nội dung phải được xử lý như chuỗi các số nhị phân được gọi là tập tin nhị phân.
  • 12. 1.Tập tin văn bản (Text files) Ghi vào tập tin văn bản Phụ thêm vào tập tin văn bản Đọc tập tin văn bản Sử dụng Scanner Sử dụng BufferedReader Tên đường dẫn Lời gọi hàm lồng nhau System.in, System.out và System.err
  • 13. 1.1. Ghi vào tập tin văn bản Mở tập tin văn bản để viết ra Cú pháp: PrintWriter Output_Stream_Name; Output_Stream_Name = newPrintWriter(newFileOutputStream(File_Name)); Đặt tên tập tin Tên file theo OS Một tập tin có 2 tên IOException Đóng tập tin: cú pháp Stream_Object.close();
  • 14. 1.2. Phụ thêm vào tập tin văn bản Output_Stream_Name= new PrintWriter( new FileOutputStream(File_Name, true or false));
  • 15. 1.3. Đọc tập tin văn bản sử dụng Scanner Cú pháp Scanner Stream_Object= new Scanner(new FileInputStream(File_Name)); Demo
  • 16. 1.4. Lớp BufferedReader và BufferedWriter Dòng nhập/xuất ký tự có sử dụng bộ đệm Giúp nhập xuất dữ liệu theo dạng ký tự, dòng (line) ký tự. Method BufferedReader
  • 18. 1.5. Lớp File Làm việc trực tiếp với các tập tin:  Tạo, xóa, đổi tên tập tin  Lấy thông tin đường dẫn Kiểm tra sự tồn tại của một tập tin/ thư mục.
  • 20. Minh họa truy xuất thuộc tính File Demo
  • 21. Minh họa truy xuất thư mục File Demo
  • 22. 1.6. Gói java.lang và lớp System Gói java.lang là gói cơ bản của ngôn ngữ Java (language). Gói này chứa khai báo các lớp wrapper như Boolean, Char, Integer,... Có lớp System mô tả cho hệ thống
  • 24. public final class System extends Object Data static PrintStream err :mô tả thiết bị xuất lỗi chuẩn (màn hình) static PrintStream out :mô tả thiết bị xuất chuẩn (màn hình) static PrintStream in :mô tả thiết bị nhập chuẩn (bàn phím) Methods Các hành vi của lớp System là các hành vi mức hệ thống như truy xuất thời gian, truy xuất các thiết lập hệ thống (trong Config.sys), thoát JVM, nạp 1 lớp trong 1 file, nạp 1 thư viện, kết thúc 1 object, thiết lập thiết bị nhập xuất hệ thống khác với các thiết bị xuất nhập chuẩn, lấy/thiết lập cơ chế bảo mật…
  • 25. public final class System extends Object .... Các method thường dùng: static long currentTimeMillis() lấy giờ hệ thống theo millisec so với 12 giờ đêm ngày 1/1/1970 static long nanoTime() lấy giờ hệ thống theo nanosec (chỉ có từ Java 1.5.0) static void exit(int status) kết thúc JVM static void gc(void) : gọi trình gom rác (garbage collector) static Properties getProperties(void) lấy thiết lập hệ thống (trong Config.sys)
  • 26. Thí dụ về truy xuất thông tin hệ thống Demo
  • 27. 2. Tập tin nhị phân (Binary File) - Binary Files là một tập tin máy tính mà có thể chứa bất kỳ loại dữ liệu, mã hóa dưới dạng nhị phân để lưu trữ máy tính và mục đích chế biến nhằm mục đích xử lý để cho các chương trình đọc. - Các luồng dành cho xử lý binary file là ObjectInputStream và ObjectOutputStream. Các luồng này có thể tự động chuyển số và kí tự thành byte và chứa trong binary file.
  • 28. 2.1. Viết dữ liệu đơn giản với Binary file DataInputStream và DataOutputStream DataInput interface được dùng để đọc các byte nhị phân từ 1 dòng byte vật lý (InputStream) và xây dựng lại các byte này thành các dữ liệu có kiểu cơ bản (primitive data types). Inteface này cũng chuyển đổi chuỗi dạng UTF-8 có sửa đổi thành dữ liệu dạng String . DataOutput interface lại làm ngược lại những gì mà DataInput interface đã làm.
  • 29. ObjectInputStream và ObjectOutputStream Là 2 interface con của DataInput và DataOutput interfaces cho việc nhập xuất đối tượng.
  • 32. 2.2. Unicode & UTF - Java sử dụng 2 dạng trình bày của văn bản + Unicode dùng biểu diễn ký tự & chuỗi trong bộ nhớ + UTF dùng cho nhập xuất - Unicode dùng 16 bit để biểu diễn 1 ký tự. - UTF + Viết tắt của “UCS Transformation Format,” + UCS: “Universal Character Set.” + Dạng nén của ký tự Unicode16-bit. + UTF mã hoá các ký tự với số bit đủ để biểu diễn ký tự
  • 33. 2.3. Lớp RandomAccessFile - Truy xuất ngẫu nhiên, di chuyển (seek) đến 1 vị trí tuỳ ý - Đọc hoặc ghi lượng dữ liệu tuỳ ý. - Hỗ trợ đọc ghi dữ liệu theo kiểu nguyên thuỷ - Mỗi thao tác đọc ghi tự động di chuyển con trỏ đến vị trí mới - long length() throws IOException: kích thước= bytes. - void seek(long position) throws IOException: - Di chuyển tương đối so với đầu file
  • 34. - RandomAccessFile không dẫn xuất từ InputStream hay OutputStream mà nó hiện thực các interface DataInput, DataOutput (có định nghĩa các phương thức I/O cơ bản). - RandomAccessFile hỗ trợ vấn đề định vị con trỏ file bên trong một file dùng phương thức seek(long newPos).
  • 35. Lớp RandomAccessFile... Constructors RandomAccessFile(File f, String mode) RandomAccessFile(String Filename, String mode) mode Ý nghĩa "r" Mở file chỉ để đọc , có thể gây lỗi IOException. "rw" Mở file đổ đọc + ghi. Nếu file chưa có thì sẽ tạo mới file này. "rws" Mở file để đọc + ghi. Nếu có hiệu chỉnh nội dung hay dữ liệu mô tả file (metadata) thì đòi hỏi phải được ghi đồng bộ. "rwd" Mở file để đọc + ghi và mỗi khi có hiệu chỉnh nội dung file thì phải được đồng bộ.
  • 36. Lớp RandomAccessFile... RandomAccessFile Method Summary void close() – Đóng file. FileChannel getChannel() Lấy đối tượng FileChannel kết hợp với . FileDescriptor getFD() Lấy FileDescriptor. long getFilePointer() - Lấy vị trí truy xuất hiện hành. long length() - Lấy đ9ộ dài file. int read() Đọc 1 byte. void write(int b) ghi 1 byte vào vị trí hiện hành int void read(byte[] b) Đọc 1 mảng byte- trả về số byte đọc được. write(byte[] b) ghi mảng b int void read(byte[] b, int off, int len) write(byte[] b, int off, int len) Đọc/ghi len byte đưa vào mảng b từ vị trí off, trả về số byte đọc được. boolean void readBoolean() Đọc/ghi 1 trị boolean. writeBoolean (boolean v) byte void readByte() Đọc.ghi 1 trị 8 bit có dấu. writeByte ( int x) char void readChar() - Đọc 1 ký tự Unicode . writeChar( int v) ghi 1 ký tự 2 byte, byte cao ghi trước double void readDouble() Đọc/ ghi 1 trị double. writeDouble ( double x) – ghi dạng longbits 8 bytes
  • 37. Lớp RandomAccessFile... float void readFloat() Đọc/ ghi 1 trị float. writeFloat( float x) ghi dạng intbit 4 bytes void readFully(byte[] b) Đọc ra cả 1 mảng byte từ vị trí hiện hành. void readFully(byte[] b, int off, int len) Đọc len byte từ vị trí hiện hành đưa vào vị trí off của mảng b. int void readInt() Đọc 1 số integercó dấu 32 bit . writeInt(int x) String readLine() Đọc 1 dòng kể từ vị trí hiện hành. long void readLong() Đọc 1 số long có dấu (64 bit). writeLong(long x) , 8 byte, byte cao ghi trước short void readShort() Đọc 1 số short có dấu (16 bit). writeShort(short x) int readUnsignedByte() Đọc 1 byte không dấu (8 bit). int readUnsignedShort() Đọc 1 số short không dấu (16 bit). String void readUTF() Đọc 1 chuỗi. writeUTF(String S) ghi chuỗi dạng mã UTF-8 độc lập máy chủ void seek(long pos) Nhẩy đến vị trí pos từ đầu file. void setLength(long newLength) ấn định độ dài file. int skipBytes(int n) Bỏ qua n bytes. void writeBytes(String s) Ghi chuỗi dạng nhóm các bytes. void writeChars(String s) Ghi chuỗi dạng nhóm ký tự.
  • 38. Minh họa lớp RandomAccessFile Demo
  • 39. 2.4. Binary I/O của Object Các lớp chỉ cần implement interface Serializable. class của object phải implements interface Serializable để thống nhất cách đọc ghi object của hai tác vụ readObject và writeObject. Việc đồng bộ cơ chế đọc ghi đối tượng thông qua hành vi toString(), tuần tự hóa dữ liệu của đối tượng. Demo
  • 40. 2.5. The Serializable interface - Khai báo implements Serializable để tạo khả năng tuần tự hóa cho các đối tượng của lớp - Serializablelà 1 interface phân loại, (tag interface) + public interface Serializable { } + Không có phương thức nào Ví dụ: public classPerson implements Serializable {}
  • 41. 2.6. Mảng Object trong binary file Một mảng là một đối tượng và do đó là một tham số cho writeObject. Một mảng nguyên có thể được lưu vào binary file sử dụng writeObject và đọc sau đó sử dụng readObject. Khi làm như vậy, nếu mảng có kiểu cơ sở là một lớp thì lớp đó phải là Serializable. Điều này có nghĩa là nếu lưu trữ tất cả dữ liệu cho một lớp Serializable trong một mảng đơn, sau đó có thể xuất tất cả dữ liệu vào một binary file với một sự dẫn ra của writeObject. Demo