Java读写二进制文件
import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /* @comany 阿斯达克(深圳)信息技术有限公司 * @author steven.wu * @since 2009.8.11 * @description read and write stream for binary file。 */ public class BinaryReadWrite { private DataInputStream dis=null; private DataOutputStream dos=null; private String s_FilePath="d:/bin.dat"; private byte[] m_datapadding = { 0x00 }; //填充空白,以补足字节位数. public BinaryReadWrite() { // TODO Auto-generated constructor stub init(); } private void init(){ try{ if(!new File(s_FilePath).exists()){ new File(s_FilePath).createNewFile(); } dis=new DataInputStream(new FileInputStream(new File(s_FilePath))); dos=new DataOutputStream(new FileOutputStream(new File(s_FilePath))); }catch(Exception e){ e.printStackTrace(); } } public void writeBinaryStream(){ try{ if(dos!=null){ for(int i=0;i<2;i++){ //write boolean value. dos.writeBoolean(true); //write a char value. char c='a'; dos.writeChar((int)c); Double d=12.567d; dos.writeDouble(d); Float f=56.782f; dos.writeFloat(f); int k=105; dos.writeInt(k); long l=98765l; dos.writeLong(l); short st=12; dos.writeShort(st); String cs="Java读写二进制文件"; String cs1="二进制文件"; if(i==0){ dos.writeUTF(cs); }else{ dos.writeUTF(cs1); } dos.write(m_datapadding); } dos.flush(); dos.close(); } }catch(Exception e){ e.printStackTrace(); } } public void readBinaryStream(){ try{ if(dis!=null){ while(dis.available()>0){ System.out.println(dis.available()); System.out.println(dis.readBoolean()); char c=(char)dis.readChar(); System.out.println(c); System.out.println(dis.readDouble()); System.out.println(dis.readFloat()); System.out.println(dis.readInt()); System.out.println(dis.readLong()); System.out.println(dis.readShort()); System.out.println(dis.readUTF()); System.out.println(dis.read(m_datapadding)); } } }catch(Exception e){ e.printStackTrace(); } } public static void main(String[] args) throws IOException { BinaryReadWrite bin=new BinaryReadWrite(); bin.writeBinaryStream(); bin.readBinaryStream(); } }