实例一
/*
二进制的观点
*/
import java.io.*;
public class MyData
{
public static void main(String[] args) throws Exception
{
/*
InputStream is = new FileInputStream("d:\\a.txt");
OutputStream os = new FileOutputStream("d:\\a2.txt");
while(true){
int x = is.read();
if(x==-1) break;
os.write(x);
}
*/
// 原始类型的操作 DataInputStream, DataOutputStream
/*
double v = 3.14;
int m = 156;
DataOutputStream dos = new DataOutputStream(new FileOutputStream("aaa.txt"));
dos.writeDouble(v);
dos.writeInt(m);
dos.flush();
*/
double v;
int m;
DataInputStream dis = new DataInputStream(new FileInputStream("aaa.txt"));
v = dis.readDouble();
m = dis.readInt();
System.out.println(v + "," + m);
}
}
实例二:
import java.io.*;
class Student implements Serializable
{
private String name;
private int age;
private boolean sex;
private String addr;
public Student(String name, int age, boolean sex, String addr)
{
this.name = name;
this.age = age;
this.sex = sex;
this.addr = addr;
}
public void show()
{
System.out.println(name + "," + age + "," + (sex?"男":"女") + "," + addr);
}
}
public class MyObject
{
public static void main(String[] args) throws Exception
{
/*
Student a = new Student("张三丰", 18, true, "北京胡同");
a.show();
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("stu.txt"));
oos.writeObject(a);
oos.flush();
*/
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("stu.txt"));
Student a = (Student)ois.readObject();
a.show();
}
}
实例三:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
public class InputAndOutStreamReader {
public static void main(String[] args)throws IOException
{
String fileName = "d:\\w.txt";
//StringOut(fileName);
//ByteOut(fileName);
//ByteIn(fileName);
String[] fileNames = {"d:\\w.txt","d:\\a.txt"};
ZipOut(fileNames);
}
/**
* 字节流
* 向文件中写入字符串
* @param fileName
* @throws IOException
*/
public static void StringOut(String fileName) throws IOException{
File file = new File(fileName);
String str = "你好中国";
OutputStream out = new FileOutputStream(file);
byte[] b = str.getBytes();
out.write(b);
out.close();
}
/**
* 字节流
* 向文件中写入字符串
* @param fileName
* @throws IOException
*/
public static void ByteOut(String fileName) throws IOException{
File file = new File(fileName);
String str = "你好ByteOut";
//OutputStream out = new FileOutputStream(file,true);//设置true是追加
OutputStream out = new FileOutputStream(file);
byte[] b = str.getBytes();
for(int i = 0; i < b.length; i++){
out.write(b[i]);
}
out.close();
}
/**
* 字节流
* 读文件内容
* @param fileName
* @throws IOException
*/
public static void ByteIn(String fileName) throws IOException{
File file = new File(fileName);
InputStream in = new FileInputStream(file);
byte[] b = new byte[(int)file.length()]; //提前获取文件长度
int n = in.read(b);
int count = 0;
int temp = 0;
while((temp=in.read()) != -1){
b[count++] = (byte)temp;
}
in.close();
System.out.println("读入文件长度:"+ n);//读入的文件长度(字节)
System.out.println(new String(b));
System.out.println(temp);
}
/**
* 多个文件压缩和读取
* @param fileNames
* @throws IOException
*/
public static void ZipOut(String[] fileNames) throws IOException{
//输入若干文件名,将所有文件压缩为w.zip
ZipOutputStream zos=new ZipOutputStream(new BufferedOutputStream(new FileOutputStream("d:\\w.zip")));
for(int i=0;i<fileNames.length;i++) {
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(fileNames[i]));
//将每个要压缩的文件称为一个压缩入口,使用ZipEntry生成压缩入口对象
//使用putNextEntry(ZipEntry entry)将压缩入口加入到压缩文件
zos.putNextEntry(new ZipEntry(fileNames[i]));
int b;
while((b=bis.read())!=-1)
zos.write(b);
bis.close();
}
zos.close();
//解压缩文件并显示
ZipInputStream zis=new ZipInputStream(new BufferedInputStream(new FileInputStream("d:\\w.zip")));
ZipEntry z;
while((z=zis.getNextEntry())!=null) {//获得入口
System.out.println(z.getName());//显示文件初始名
int x;
while((x=zis.read())!=-1)
System.out.write(x);
System.out.println();
}
zis.close();
}
}