文件流的读取和写入


实例一

/*
  二进制的观点
*/


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();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值