「Java基础」IO流

IO流

IO流分字符流字节流

IO流的概念、基类有什么、特点

概念:IO流的概念是来源于对数据的操作,读写文件,IO流中定义的方法是为了更方便的操作数据,如在设备与设备之间的信息传输,就用到了IO流

基类:
字节流中的两个基类有,InputStream、OutputStream
字符流中的两个基类有,Reader、Writer

IO流特点:

  • IO流用来处理设备间的数据传输
  • Java对数据的操作是通过的方式进行的
  • 流按操作可分为字节流与字符流
  • 按流向分为:输入流、输出流

FileWriter对象的方法:write | flush | close

当一个FlieWriter对象被建立好之后,这个对象就可以调用write()方法、flush()方法、close()方法,进行数据的读取、写入和关闭(在关闭之间,不需要指定flush方法,会自动被写入进目标文件中)

// 例子1:一个简单的文件写入
import java.io.FileWriter;
import java.io.IOException;

public class FileWriterDemo {
    public static void main(String[] args) throws IOException
    {
        FileWriter fw = new FileWriter("demo.txt");
        fw.write("wangziyu1"); // 写在了内存
        fw.flush();// 也可以用这个方法
        fw.close();// 将内存中的内容写入到目标文件
    }
}

IO流异常的处理方式

IO流中的异常可以被抛出为IOException

//读写文件的标准写法
import java.io.FileWriter;
import java.io.IOException;

public class IoException {
    public static void main(String[] args)
    {
        FileWriter fw = null;
        try
        {
            fw = new FileWriter("demo.txt");
            fw.write("WZY"); // 可能的报错环节1,如果目标文件不存在
        }
        catch (IOException E)
        {
            System.out.println(E.toString());
        }
        finally {
            try {
                if(fw!=null)
                    fw.close();//关闭环节 可能的报错环节2,如果fw未能被成功的创建出来指向目标文件。
            }
            catch (IOException F)
            {
                System.out.println(F.toString());
            }
        }
    }
}

文件的续写

文件的续写是在已有的文件内容末尾添加新写入的内容

import java.io.FileWriter;
import java.io.IOException;

// 文件的续写
public class FileWriterDemo3 {
    public static void main(String[] args) throws IOException
    {
        // 传递一个true参数,代表不覆盖已有文件,并在文件末尾续写
        FileWriter fw = new FileWriter("demo.txt",true);
        // \r表示将光标移动到最前面,\n表示将光标移动到下一行
        fw.write("\r\n123");
        fw.close();
    }
}

读取方式

读取方式1:Fileread()方法

// 通过read()方法进行读写
import java.io.FileReader;
import java.io.IOException;

public class FileReaderDemo {
    public static void main(String[] args) throws IOException
    {
        FileReader fr = new FileReader("demo.txt"); // 指定需要读取的目标
        while (true)
        {
            int c = fr.read(); // 使用read()方法,将c读到内存
            if(c==-1)
                break;
            System.out.println((char) c);
        }
    }
}

读取方式2:字符数组读取

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class CopyText2 {
    public static void main(String[] args) throws IOException
    {
        copy_2();
    }
    public static void copy_2()
    {
        FileWriter fw = null;
        FileReader fr = null;
        try {
            fw = new FileWriter("demo_copy.txt"); // 准备写的文件
            fr = new FileReader("demo.txt"); // 读文件进入缓存中
            char[] buf = new char[1024];
            int len = 0;
            while ((len=fr.read(buf))!=-1) // 将fr内容读入buf中
            {
                //System.out.println(buf);
                fw.write(buf,0,len);// 写入
            }
        }
        catch (IOException e)
        {
            throw new RuntimeException("读写失败");
        }
        finally {
            if(fr!=null)
                try
                {
                    fr.close();
                    fw.close();
                }
                catch (IOException e)
                {

                }
        }
    }
}

文件的拷贝流程介绍(IO流在文件中被操作的流程)

文件拷贝流程
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值