Flie的用法(字节流和输入输出)

一,字节流和输入输出:

1.根据数据的流向分为:输入流和输出流  2.格局数据的类型分为:字节流和字符流

输出流 : 把数据从 内存 中写出到 其他设备 上的流

源代码:

    public static void main(String[] args) throws IOException {
        //输出流:,内存的内容输出到文件(与操作)入流:文件内容输入到内存中(读操作)
        File f1=new File("d:/a.txt");
        //创建一个输入流,读取f1这个文件
        InputStream input=new FileInputStream(f1);
        //读取文件的一个字符,然后把字符转换为对应的数字返回。如果读取到文件的末尾,返回的是-1
        int n;
        while((n=input.read())!=-1){
            System.out.println((char)n);
        }
    }


输入流 : 把数据从 其他设备 上读取到 内存 中的流

源代码:

    public static void main(String[] args) throws IOException {
        File f1=new File("d:/来自一个爱你的表白.txt");
        f1.createNewFile();
        OutputStream out=new FileOutputStream(f1);
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入:");
        String msg=sc.next();
        byte[] bytes = msg.getBytes();//获字串对应解析后的 byte 数组out.write(bytes);
        //定义一个String,把字符串的内容写入到电脑的磁盘中
        String mgs="爱你在每一个你不知道的瞬间!";
        byte[] byt = mgs.getBytes(); //获取字符串 解析后的 byte数组
        out.write(byt); //把yte数组写入文件,相当于把字符串写入文件中
    }


字节流 : 以字节为单位,读写数据的流。
字符流 : 以字符为单位,读写数据的流。

二,顶级父类

顶级父类
输入流输出流 
字节流lnputStreamOutputStream
字符流ReadeWriter

三,FileOutputStream和OutputStream类

1.FileOutputStream

构造方法:
      - public FileOutputStream(String name):创建文件输出流 以指定名称写入文件
      - public FileOutputStream(File file):创建文件输出流,以指定的File对象表示的文件进行写入
2.成员方法:
     - public void close():关闭此输出流并释放与此流相关联的任何系统资源
      close方法,当完成流的操作时,必须调用此方法,释放系统资源,否则数据写入不完整或消失
     - public abstract void write(int b):将指定的字节写入输出流
     - public void write(byte b[]):将 b.length字节从指定的字节数组写入到此输出流中
     - public void write(byte b[], int off,int len):将指定范围的字节数组的字节数据写到此输出流中
四,io

我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为 输入input 和 输出output,即流向内存是输入流,流出内存的输出流。
Java中I/O操作主要是指使用 java,io 包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据。
文件的复制:

源代码:

package FilePack;
 
import java.io.*;
 
public class FileCopy {
    public static void main(String[] args) throws IOException {
        File f1=new File("D:/a.jpg");
        File newFile=new File("D:/aa/copy.jpg");
        //2.创建目的文件
        newFile.createNewFile();
        //3.定义输入输出流:使用输入流读取内容使用输出流写入内容
        InputStream in=new FileInputStream(f1);
        OutputStream out=new FileOutputStream(newFile);
 
        /*
        //4.循环读取文件内容,同时写入指定的文件中
        int n;
        while ((n=in.read())!=-1) {
            out.write(n);
        }
        //实际工作中推荐写法
        byte[] buffer=new byte[10];
        int n=0;
        while( (n=in.read(buffer)) != -1){
            out.write(buffer,0,n); //buffer数组从0开始,截取读取到有效字节数n 写入到目的文件中
        }
         */
 
        //联系时容易理解的方式
        byte[] buffer=new byte[10];
        int n=0;
        while(true) {
            n = in.read(buffer); //读取文件,内容放Abuffer数组中,返回的是实际读取的字节数
            if(n!=-1) {
                out.write(buffer,0,n); //buffer数组从0开始,裁取读取到有效字节数n 写入到目的文件中
            }else {
                break;
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值