Professional Documents
Culture Documents
Bi 8 - Lung vo ra
Ni dung
Tng quan v lung vo ra Cc kiu lung vo ra:
Lung byte Lung k t Lung c m Lung d liu Lung i tng
Bi 8 - Lung vo ra
Lung vo ra
Lung vo ra (input/output streams IO streams)
Biu din mt ngun vo v mt ch ra
Lung vo ra
nh ngha tng qut: mi lung l mt chui d liu. Mi chng trnh thng s dng:
Mt lung vo c d liu t mt ngun, mi ln c
mt n v d liu.
Mt lung ra ghi d liu ra mt ch, mi ln ghi mt
n v d liu.
Stream Data source
4
Bi 8 - Lung vo ra
101010111001101 Stream
Program
Lung vo ra
Cc chng trnh s dng lung byte c/ghi cc byte (8 bits). Trong Java, c nhiu lp lung byte. Cc lp ny u phi sinh t hai lp:
InputStream OutputStream
Bi 8 - Lung vo ra
Lung byte
Vit chng trnh sao chp mt tp, m phng lnh
cp input.txt output.txt (Unix, Linux) copy input.txt output.txt (MS-Dos)
Lung byte
public class CopyBytes { public static void main(String[] args) throws IOException { InputStream in = null; OutputStream out = null; try { in = new FileInputStream("input.txt"); out = new FileOutputStream("output.txt"); int c; while ((c = in.read()) != -1) { Ti sao khng c cc khi out.write(c); catch? } } finally { if (in != null) in.close(); if (out != null) out.close(); } Lun phi ng mi lung } d liu khi s dng xong. }
Bi 8 - Lung vo ra
Lung byte
Tuy nhin, lung byte biu din cc thao tc vo/ra mc thp, ta nn trnh
s dng cc lung k t.
Nu khng nn dng trc tip, ti sao li gii thiu lung byte?
Bi 8 - Lung vo ra
Lung k t
Nn tng Java lu cc gi tr k t s dng chun Unicode. Mi lp biu din lung k t u phi sinh t hai lp Reader v Writer.
Bi 8 - Lung vo ra
Lung k t
public class CopyCharacters { public static void main(String[] args) throws IOException { Reader in = null; Writer out = null; try { in = new FileReader("input.txt"); out = new FileWriter("output.txt"); int c; while ((c = in.read()) != -1) { out.write(c); } } finally { if (in != null) in.close(); if (out != null) out.close(); } } }
Bi 8 - Lung vo ra
10
Lung c m
Lung khng m:
Mi lnh c, ghi c thc hin trc tip bi h iu hnh. Chng trnh km hiu qu, do mi lnh u i hi truy xut a, truyn d
11
Bi 8 - Lung vo ra
Lung c m
Cc lp h tr lung c m: BufferedInputStream, BufferedOutputStream BufferedReader, BufferedWriter Kch hot vic c/ghi b m khi b m cha y: Gi phng thc flush()
m (tng ng):
BufferedReader bufferedReader = new
BufferedReader(new FileReader("input.txt"));
BufferedWriter bufferedWriter = new
12
Bi 8 - Lung vo ra
BufferedWriter(new FileWriter("output.txt"));
Lung d liu
Lung d liu h tr vic c, ghi cc gi tr thuc cc kiu d liu c
s:
boolean, char, byte, short, int, long, float, double String
13
Lung d liu
V d, gi s ta c 3 bin price, unit v desc ln lt cha cc gi tr thuc cc
14
Lung d liu
c d liu t tp v gn gi tr cho cc bin tng ng:
DataInputStream in; try { in = new DataInputStream(new BufferedInputStream( new FileInputStream("dataFile.dat"))); double price = in.readDouble(); int unit = in.readInt(); String desc = in.readUTF(); } catch (FileNotFoundException e) { Gi cc phng thc e.printStackTrace(); tng ng ca in } catch (IOException e) { e.printStackTrace(); }
15
Bi 8 - Lung vo ra
Lung i tng
Lung i tng h tr vic c, ghi cc i tng. Nu i tng thuc mt lp ci t giao din Serializable th ta c th
16
Bi 8 - Lung vo ra
Lung i tng
ObjectInput v ObjectOutput tng ng l cc giao din con ca cc giao din
DataInput v DataOutput.
Chnh v vy, mi phng thc vo, ra i vi cc kiu d liu c s do DataInput,
Lung i tng
ObjectInput oi = null; try { oi = new ObjectInputStream(new BufferedInputStream( new FileInputStream("dates.dat"))); Calendar date = (Calendar)oi.readObject(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { Phng thc readObject() e.printStackTrace(); lun tr v kiu Object nn } catch (ClassNotFoundException e) { ta phi p thnh kiu thch e.printStackTrace(); hp. }
18
Bi 8 - Lung vo ra