Java IO 處理之四:列印流 和 資料流用法
-
- 1. Java IO 處理流之列印流
- 2. Java IO 處理流之資料流
1. Java IO 處理流之列印流
- 在整個IO包中,列印流是輸出資訊最友善的類。
-
PrintStream(位元組列印流)和PrintWriter(字元列印流)
① 提供了一系列重載的print和println方法,用于多種資料類型的輸出
② PrintStream和PrintWriter的輸出不會抛出異常
③ PrintStream和PrintWriter有自動flush功能
④ System.out傳回的是PrintStream的執行個體
- Demo
//列印流:位元組流:PrintStream 字元流:PrintWriter
@Test
public void printStreamWriter() {
FileOutputStream fos = null;
try {
fos = new FileOutputStream(new File("print.txt"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}//建立列印輸出流,設定為自動重新整理模式(寫入換行符或位元組 '\n' 時都會重新整理輸出緩沖區)
PrintStream ps = new PrintStream(fos,true);
if (ps != null) { // 把标準輸出流(控制台輸出)改成檔案
System.setOut(ps);}
for (int i = 0; i <= 255; i++) { //輸出ASCII字元
System.out.print((char)i);
if (i % 50 == 0) { //每50個資料一行
System.out.println(); // 換行
} }
ps.close();
}
2. Java IO 處理流之資料流
- 為了友善地操作Java語言的基本資料類型的資料,可以使用資料流。
-
資料流有兩個類:(用于讀取和寫出基本資料類型的資料)
① DataInputStream 和 DataOutputStream
② 分别“套接”在 InputStream 和 OutputStream 節點流上
- DataInputStream中的方法
boolean readBoolean()
byte readByte()
char readChar()
float readFloat()
double readDouble()
short readShort()
long readLong()
int readInt()
String readUTF()
void readFully(byte[] b)
-
DataOutputStream中的方法
将上述的方法的read改為相應的write即可。
- 資料流實作把資料寫到檔案
- 注意:要先寫入到檔案再讀取。
//資料流:用來處理基本資料類型、String、位元組數組的資料: DataInputStream DataOutputStream
@Test
public void testData() {
DataOutputStream dos = null;
try {
FileOutputStream fos = new FileOutputStream("data.txt");
dos = new DataOutputStream(fos);
dos.writeUTF("我愛你,你卻不知道!");
dos.writeBoolean(true);
dos.writeLong(1345674561);
} catch (IOException e) {
e.printStackTrace();
}finally {
if(dos != null) {
try {
dos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
- 資料流實作從檔案讀取資料到程式
@Test
public void testData1() {
DataInputStream dis = null;
try {
dis = new DataInputStream(new FileInputStream(new File("data.txt")));
// byte [] b = new byte[20];這樣讀是錯的,會出現亂碼
// int len;
// while((len = dis.read(b)) != -1) {
// System.out.println(new String(b,0,len));
// }
String str = dis.readUTF();
System.out.println(str);
boolean b = dis.readBoolean();
System.out.println(b);
long l = dis.readLong();
System.out.println(l);
} catch (Exception e) {
e.printStackTrace();
}finally {
if(dis != null) {
try {
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}