IO流总结

1.File文件类,只能对文件本身操作,不能对文件中的内容进行操作。

    public File("文件路径");构造方法。

    boolean  createNewFile() throws IOException; 创建新的文件
    boolean  mkdir()  创建目录
    boolean  mkdirs() 创建多层目录
    boolean  delete():删除文件或目录
    Boolean  exists():判断文件或目录是否存在。
    boolean  isFile(): 判断是否为文件
    boolean  isDirectory():判断是否为目录

    String[] list(): 列出指定目录下所有的文件或文件夹的名称。
    File[]  listFile(): 列出指定目录下所有文件或目录对象。

    String getName():得到文件或目录的名称
    String getPath():得到文件或目录的相对路径.
    String getAbsolutePath():得到文件或目录的绝对路径

 

2.使用IO流

2.1

    1.根据流的方法分为:
        输入流
        输出流
    2.根据读取的单位。
        字节流
        字符流

2.2

字符输入流Reader和字符输出流Writer。 通过文件发现这两个类都是抽象类,该类无法实例化对象,由子类实现

FileReader 字符输入流。读取文件的内容以字符的形式来读取。有两种方式

(1)每次读取一个字符,返回读取的字符对应的ASCII值。

    File file=new File("D://a.txt");
    FileReader fr=new FileReader(file);
    int i=fr.read();//每次读取一个字符,返回读取的字符对应的ASCII值。
    while(i!=-1){
        char c=(char)i;
        System.out.println(c);
        i=fr.read();
    }
 

(2)每次读取一个字符数组。

    File file=new File("D://a.txt");
    FileReader fr=new FileReader(file);
    char[] cs=new char[1000];
    int i=fr.read(cs);//
    while(i!=-1){
        String str=new String(cs,0,i);//把cs字符数组转化为字符串,从数组中第一个元素,转化i个字符
        System.out.println(str);
        i=fr.read(cs);
    }

2.3 FileWriter  字符输出流 。

    File file=new File("D://a.txt");
    FileWriter fw=new FileWriter(file,true); //没有自动会建。 true:是否运行追加
    String str="I am fine\n";
    fw.write(str); //
        //fw.flush();//刷新FileWrite中内容。
    fw.close();
 

2.4字节流:
    InputStream 和 OutputStream 这两个类为字节输入和输出的父类。这两个类也是抽象类。这两个类不能创建对象,需要使用子类来完成。

(1)

FileOutputStream: 字节输出流
    File file=new File("D://d.txt");
    FileOutputStream fos=new FileOutputStream(file,true);//字节输出流
    String str="你好!玛德";
    byte[] b=str.getBytes();//把str转化为字节数组
    fos.write(b);//write(byte[] b) 

    fos.close();

(2)

FileInputStream:字节输入流
    File file=new File("D://d.txt");
    FileInputStream fis=new FileInputStream(file);
    byte[] bytes=new byte[10];
    int i= fis.read(bytes);
    while(i!=-1){
        String str=new String(bytes,0,i);
        System.out.println(str);
        i=fis.read(bytes);
    }
    fis.close();

2.5 处理流

BufferedWriter:字符输出的处理流
    
    BufferedWriter(Writer out) :这是它的构造方法。
    FileWriter fw=new FileWriter("D://c.txt");
    BufferedWriter bw=new BufferedWriter(fw,true); //升级。
    bw.write("Hello Word");
    bw.flush();
    bw.newLine(); //产生换行,可以应用于任何系统。

    bw.close();
    

BufferedReader:字符输入的处理流 。
    
        Reader r=new FileReader("笔记.txt");
        BufferedReader br=new BufferedReader(r);
        String line=br.readLine();// 可以读取一行。
        while(line!=null){
           System.out.println(line);
           line=br.readLine();
        }
        br.close();

 

BufferedOutputStream:字节输出流的缓存流。
    
        BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("D://e.txt"));
        String str="Hello Good";
        byte[] bytes=str.getBytes();
        bos.write(bytes);
        bos.close();

 

BufferedInputStream:字节输入流的缓存流
    
        BufferedInputStream bis=new BufferedInputStream(new FileInputStream("D://e.txt"));
        byte[] b=new byte[20];
        int i= bis.read(b);
        while(i!=-1){
            String str=new String(b,0,i);
            System.out.println(str);
            i= bis.read(b);
        }
        bis.close();

2.6  对象流

ObjectInputStream  和  OjbectOutputSteam

序列化(Serialize):    用ObjectOutputStream类将一个Java对象通过IO流写入到数据源中

    public static void main(String[] args) throws Exception 
    {
        OutputStream os=new FileOutputStream("D://a.txt");
        ObjectOutputStream oos=new ObjectOutputStream(os);

        //注意:该类People 必须实现Serializable接口。
        //该类中所有要序列化的属性的类型必须也实现Serializable接口

        People p=new People("张三",19);
        oos.writeObject(p); //把一个对象通过ObjectOutputStream写入到数据源

        oos.close();
        os.close();
    }

反序列化(Deserialize):用ObjectInputStream类从数据源中恢复该Java对象。
    public static void main(String[] args) throws Exception
    {
        ObjectInputStream ois=new ObjectInputStream(new FileInputStream("D://a.txt"));
        Object o=ois.readObject(); //获取该文件中的对象
        People p=(People)o; //向下转型
        System.out.println(p.getName()+"=====>"+p.getAge()+"----->");//toString();
        ois.close();
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值