DataInputStream和DataOutputStream類創(chuàng)建的對(duì)象稱為數(shù)據(jù)輸入流和數(shù)據(jù)輸出流。這兩個(gè)流是很有用的兩個(gè)流,它們?cè)试S程序按著機(jī)器無(wú)關(guān)的風(fēng)格讀取Java原始數(shù)據(jù)。也就是說(shuō),當(dāng)讀取一個(gè)數(shù)值時(shí),不必再關(guān)心這個(gè)數(shù)值應(yīng)當(dāng)是多少個(gè)字節(jié)。
DataInputStream和DataOutputStream的構(gòu)造方法如下:
1)DataInputStream(InputStream in)
創(chuàng)建的數(shù)據(jù)輸入流指向一個(gè)由參數(shù)in指定的底層輸入流。
2)DataOutputStream(OutputStream out)
創(chuàng)建的數(shù)據(jù)輸出流指向一個(gè)由參數(shù)out指定的底層輸出流。
DataInputStream和DataOutputStream類的常用方法如下:
方法 | 說(shuō)明 |
close() | 關(guān)閉流 |
readBoolean() | 讀取一個(gè)布爾值 |
readByte() | 讀取一個(gè)字節(jié) |
readChar() | 讀取一個(gè)字符 |
readDouble() | 讀取一個(gè)雙精度浮點(diǎn)值 |
readFloat() | 讀取一個(gè)單精度浮點(diǎn)值 |
readInt() | 讀取一個(gè)int值 |
readLong() | 讀取一個(gè)長(zhǎng)型值 |
readShort() | 讀取一個(gè)短型值 |
readUnsignedByte() | 讀取一個(gè)無(wú)符號(hào)字節(jié) |
readUnsignedShort() | 讀取一個(gè)無(wú)符號(hào)短型值 |
readUTF() | 讀取一個(gè)UTF字符串 |
skipBytes(int n) | 跳過(guò)給定數(shù)量的字節(jié) |
writeBoolean(boolean v) | 寫(xiě)入一個(gè)布爾值 |
writeBytes(String s) | 寫(xiě)入一個(gè)字符串 |
writeChars(String s) | 寫(xiě)入字符串 |
writeDouble(double v) | 寫(xiě)入一個(gè)雙精度浮點(diǎn)值 |
writeFloat(float v) | 寫(xiě)入一個(gè)單精度浮點(diǎn)值 |
writeInt(int v) | 寫(xiě)入一個(gè)int值 |
writeLong(long v) | 寫(xiě)入一個(gè)長(zhǎng)型int值 |
writeShort(int v) | 寫(xiě)入一個(gè)短型int值 |
writeUTF(String s) | 寫(xiě)入一個(gè)UTF字符串 |
例如,寫(xiě)幾個(gè)Java類型的數(shù)據(jù)到一個(gè)文件,然后再讀出來(lái):
import java.io.*; public class Main { public static void main(String args[]) { File file = new File("apple.txt"); try { FileOutputStream fos = new FileOutputStream(file); DataOutputStream outData = new DataOutputStream(fos); outData.writeInt(100); outData.writeLong(123456); outData.writeFloat(3.1415926f); outData.writeDouble(987654321.1234); outData.writeBoolean(true); outData.writeChars("How are you doing"); } catch(IOException e) {} try { FileInputStream fis = new FileInputStream(file); DataInputStream inData = new DataInputStream(fis); System.out.println(inData.readInt()); //讀取int數(shù)據(jù) System.out.println(inData.readLong()); //讀取long數(shù)據(jù) System.out.println(+inData.readFloat()); //讀取float數(shù)據(jù) System.out.println(inData.readDouble()); //讀取double數(shù)據(jù) System.out.println(inData.readBoolean()); //讀取boolean數(shù)據(jù) char c = '\0'; while((c=inData.readChar()) !='\0') { //'\0'表示空字符 System.out.print(c); } } catch(IOException e) {} } }
C語(yǔ)言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫(xiě)的:零基礎(chǔ)C語(yǔ)言學(xué)練課程
解決困擾你多年的C語(yǔ)言疑難雜癥特性的C語(yǔ)言進(jìn)階課程
從零到寫(xiě)出一個(gè)爬蟲(chóng)的Python編程課程
只會(huì)語(yǔ)法寫(xiě)不出代碼?手把手帶你寫(xiě)100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門(mén)課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程