Java中的简单IO

一、IO概念

IO就是输入(in)输出(out)。作为我们人来说,看书是输入,把知识记在到我们脑子里;写字是输出,把脑子里的内容写到本子上。然后我们把程序当做人的大脑,输入就是内容读到程序里面,输出就是把内容写到另一个地方。在输入输出的过程中,需要借用相应的工具,比如看需要眼睛,程序则需要输入类;写需要手,程序则需要输出类。

二、字节流(InputStream/OutpuStream)和字符流(Reader/Writer)

字节流就是按字节读取和输出。字符流则是按字符读取和输出。一般来说,字节流比较全面,可以读取文本文件和非文本文件;字符流用来读取文本文件。

三、代码

1.字节流复制文件

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 输入+输出
 * Stream字节流可以读取文本和非文本文件  比较全面
 */
public class IoStreamTest3 {
    public static void main(String[] args) throws IOException {
        //文件
        String path = "D:\\";
        File fileIn = new File(path + "in2.png");
        String fileName = fileIn.getName();
        String type = fileName.substring(fileName.lastIndexOf("."));//文件后缀名
        File fileOut = new File(path + "out2" + type);
        //流
        FileInputStream fis = new FileInputStream(fileIn);
        FileOutputStream fos = new FileOutputStream(fileOut);
        //读取
        byte[] buffer = new byte[1024];//缓冲区
        int length = fis.read(buffer);
        while (length != -1) {
            //写入
            fos.write(buffer, 0, length);//写入有效内容
            length = fis.read(buffer);
        }
        //关闭
        fos.close();
        fis.close();
        System.out.println("finish");
    }
}

2.字符流复制文件

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

/**
 * Reader Writer  字符流进行IO
 */
public class IoReaderTest {
    public static void main(String[] args) throws IOException {
        //文件
        File fileIn = new File("D:\\in1.txt");
        File fileOut = new File("D:\\out1.txt");
        //流
        FileReader fr = new FileReader(fileIn);
        FileWriter fw = new FileWriter(fileOut);
        //读取
        char[] buffer = new char[1024];//缓冲区 用来提升效率
        int length = fr.read(buffer);
        while (length != -1) {
            //写入
            fw.write(buffer, 0, length);
            length = fr.read(buffer);
        }
        //关闭
        fw.close();
        fr.close();
        System.out.println("finish");
        //如果乱码,可以查看下两个文件的编码是否不一致
    }
}

3.字符流指定编码

import java.io.*;

/**
 * Buffered字符流进行IO
 */
public class IoBufferedTest {
    public static void main(String[] args) throws IOException {
        //文件
        String path = "D:\\";
        String number = "4";
        File fileIn = new File(path + "in" + number + ".txt");
        String fileName = fileIn.getName();
        String type = fileName.substring(fileName.lastIndexOf("."));
        File fileOut = new File(path + "out" + number + type);
        //流
        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(fileIn), "utf-8"));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileOut), "utf-8"));
        //读取
        char[] buffer = new char[1024];
        int length = br.read(buffer);
        while (length != -1) {
            System.out.println(length);
            bw.write(buffer, 0, length);
            length = br.read(buffer);
        }
        //关闭
        bw.close();
        br.close();
        System.out.println("finish");
    }
}

四、代码步骤

1.先确定要操作的文件,源文件(输入来源,从这个文件读取内容)和目标文件(把内容输出到该文件)

2.创建对应的流工具

3.从源文件获取输入内容,输出到目标文件

4.关闭流,注意要先关闭输出流再关闭输入流

依据这样的思路,可以自己写一个BufferedInputStream和BufferedOutputStream进行文件复制。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值