Java——IO

File类:

一个file类的对象可以表示一个具体的文件或目录。

file类的对象表示硬盘上的文件,判断、获取文件信息,创建、删除;

输入和输出:

java中把用于文件输入和输出的类称为流;

有些类用于输入数据的,有些用于输出数据的。

有些以字节为单位读取数据,有些以字符为单位读取数据。

字节流:以字节为单位读取数据,可以读取任意的文件,mp3。

字节输入/输出流:

输入:Inputstream

输出:OutputStream

文件字节输入流:

file+inputstream

文件字节输出流:

file+OutputStream

节点流与处理流:

根据封装类型不同

节点流:直接封装的是文件,数据。

处理(包装)流:分装的是其他流对象,称为处理流。提供了缓冲功能。

处理流:

buffer/Data+In/Out;

buffer缓冲。

使用buffer后需要flush刷新缓冲区。

Data数据输入输出流。

import java.io.*;

public class Dome5 {
    public static void main(String[] args) throws IOException {
        FileInputStream inputStream=new FileInputStream("D:/dome2.txt");
        BufferedInputStream inputStream1=new BufferedInputStream(inputStream,20);
        FileOutputStream outputStream=new FileOutputStream("E:/dome2.txt");
        BufferedOutputStream outputStream1=new BufferedOutputStream(outputStream,20);
        byte[] bytes=new byte[10];
        int flag=0;
        while ((flag=inputStream1.read(bytes))!=-1){
            outputStream1.write(bytes,0,flag);
        }
        inputStream1.close();
        outputStream1.close();
    }
}
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
public class Dome6 {
    public static void main(String[] args) throws IOException {
        Scanner Scan=new Scanner(System.in);
        FileOutputStream outputStream=new FileOutputStream("E:/masse.txt");
        String s=Scan.next();
        //outputStream.write(s.getBytes());wtite输入格式为位数组,需要将输入的字符串转化为byte【】类型。
        DataOutputStream dataOutputStream=new DataOutputStream(outputStream);
        dataOutputStream.writeUTF(s);
        dataOutputStream.flush();
        dataOutputStream.close();

    }
}

字符输入/输出流:

字符流:以字符为单位读取数据。只能读取文本文件;会将读到的字节根据编码表转化为一个字符编码

处理字符和字符串,处理单位为1个字符,

输入:Reader:

输出:Writer:

常用类:

File+Reader/Reader继承InputStreamReader和OutputStreamReader;1.InputStreamReader/2.OutputStreamReade都是转换流,1将字节转换为字符,2将字符转化为字节。

import java.io.*;
public class Dome1 {
    public static void main(String[] args) throws IOException {
        FileReader f=new FileReader("D:/dome.txt");
        FileWriter f1=new FileWriter("D:/feifanDome/dome1.txt");
        int size=0;
        char[] chars=new char[4];
        /*
        while ((size=f.read())!=-1){
            f1.write(size);
        }
        f.close();
        f1.close();
         */
        while ((size=f.read(chars))!=-1){
            f1.write(chars,0,size);
        }
        f.close();
        f1.close();
    }
}
处理流:

buffered+Reade/Writer。
 

import java.io.*;
public class Dome2 {
    public static void main(String[] args) throws IOException {
        FileReader f1=new FileReader("D:/dome.txt");
        FileWriter f2=new FileWriter("D:/feifanDome/dome2.txt",true);//true 保存上次的数据
        BufferedReader bufferedReader=new BufferedReader(f1);
        BufferedWriter bufferedWriter=new BufferedWriter(f2);
        String c=null;
        while ((c=bufferedReader.readLine())!=null){
            bufferedWriter.write(c);
            bufferedWriter.newLine();
        }
        bufferedWriter.flush();
        bufferedReader.close();
        bufferedWriter.close();
    }
}

对象输入输出流:

把java中的对象输入到文件中,从文件中把对象输入到程序中。

如果一个类需要被序列化到文件中,那么这个类需要实现Serializable接口,会自动生成序列化编号,但自动生成的编号在类信息改变后,会重新生成一个编号。

这时可以在类中显示生成的一个编号,这样类信息修改后,编号也不改变。

import java.io.Serializable;

public class Student implements Serializable{ //需要被序列化到文件中,就要实现Serializable接口
    private static final long serialVersionUID = -3360144134016461703L;//生成序列化编号
    private String nume;
    private int num;
    public Student(String nume, int num) {
        this.num = num;
        this.nume = nume;
    }
    public int getNum() {
        return num;
    }
    public void setNum(int num) {
        this.num = num;
    }
    public String getNume() {
        return nume;
    }
    public void setNume(String nume) {
        this.nume = nume;
    }
    @Override
    public String toString() {
        return "Student{" +
                "num=" + num +
                ", nume='" + nume + '\'' +
                '}';
    }
}
对象序列化:

当一个类的对象需要被序列化时需要被生成序列化编号

把java中的对象输入到文件的过程

ObjectOutputStream;

对象反序列化:

从文件中把对象输入到程序的过程;

反序列是会生成一个新对象,所以对象的反序列化也是创建对象的一种方式。

ObjectInputStream;

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值