/**
* 二進制讀寫文件
*/
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class MainClass
{
/**
* java.io包中的OutputStream及其子類專門用于寫二進制數據。
* FileOutputStream是其子類,可用于將二進制數據寫入文件。
* DataOutputStream是OutputStream的另一個子類,它可以
* 連接到一個FileOutputStream上,便于寫各種基本數據類型的數據。
*/
public void writeMethod1()
{
String fileName="c:/kuka1.dat";
int value0=255;
int value1=0;
int value2=-1;
try
{
//將DataOutputStream與FileOutputStream連接可輸出不同類型的數據
//FileOutputStream類的構造函數負責打開文件kuka.dat,如果文件不存在,
//則創建一個新的文件,如果文件已存在則用新創建的文件代替。然后FileOutputStream
//類的對象與一個DataOutputStream對象連接,DataOutputStream類具有寫
//各種數據類型的方法。
DataOutputStream out=new DataOutputStream(new FileOutputStream(fileName));
out.writeInt(value0);
out.writeInt(value1);
out.writeInt(value2);
out.close();
} catch (Exception e)
{
e.printStackTrace();
}
}
//對于大量數據的寫入,使用緩沖流BufferedOutputStream類可以提高效率
public void writeMethod2()
{
String fileName="c:/kuka2.txt";
try
{
DataOutputStream out=new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream(fileName)));
out.writeInt(10);
System.out.println(out.size()+" bytes have been written.");
out.writeDouble(31.2);
System.out.println(out.size()+" bytes have been written.");
out.writeBytes("JAVA");
System.out.println(out.size()+" bytes have been written.");
out.close();
} catch (Exception e)
{
e.printStackTrace();
}
}
/**
* 對二進制文件比較常見的類有FileInputStream,DataInputStream
* BufferedInputStream等。類似于DataOutputStream,DataInputStream
* 也提供了很多方法用于讀入布爾型、字節、字符、整形、長整形、短整形、
* 單精度、雙精度等數據。
*/
public void readMethod1()
{
String fileName="c:/kuka1.dat";
int sum=0;
try
{
DataInputStream in=new DataInputStream(
new BufferedInputStream(
new FileInputStream(fileName)));
sum+=in.readInt();
sum+=in.readInt();
sum+=in.readInt();
System.out.println("The sum is:"+sum);
in.close();
} catch (Exception e)
{
e.printStackTrace();
}
}
public void readMethod2()
{
try
{
FileInputStream stream=new FileInputStream("c:/kuka.dat");
int c;
while((c=stream.read())!=-1)
{
System.out.println(c);
}
} catch (Exception e)
{
e.printStackTrace();
}
}
}