IO流、字节流

33 篇文章 0 订阅
30 篇文章 0 订阅

IO流

IO流:用来处理设备之间的数据传输,Java对数据的操作是通过流的方式,Java用于操作流的对象都在IO包中。
分类

1、按照数据流向
		输入流:读入数据
		输出流:写出数据
2、按照数据类型
		字节流:可以读写任何类型的文件,比如:音频、视频、文本文件
			字节输入流:InputStream   读
        	字节输出流:OutputStream  写
		字符流:只能读写文本文件
			字符输入流:Reader		 读
			字符输出流:Writer		 写
		

IO流基类
1、字节流的抽象基类:
InputStream、OutputStream。
2、字符流的抽象基类:
Reader、Writer。
IO类层次图
在这里插入图片描述

字节流

普通字节流:

FileOutputStream写出数据
构造方法:

    FileOutputStream(File file)
	FileOutputStream(String name)

常用方法:

    public void write(int b):		写一个字节  超过一个字节 砍掉前面的字节
	public void write(byte[] b):	写一个字节数组
	public void write(byte[] b,int off,int len):	写一个字节数组的一部分
	public void close( )                    		关闭该流,释放资源

数据追加写入:

//需要在包装的文件名后面加true
FileOutputStream fos = new FileOutputStream("a.txt" , true) ;  // 完成追加写入

FileInputStream读取数据:
构造方法:

	FileInputStream(File file)          
	FileInputStream(String name)

常用方法:

public int read()                   		读取一个字节的数据(如果没有数据返回的就是-1)
public int read(byte[] b)             		读取指定数组中的字节
public int read(byte[] b, int off, int len) 读取指定数组中一部分字节
public void close( )                        关闭该流,释放资源

高效字节流:

BufferedOutputStream写出数据:
构造方法:

BufferedOutputStream(OutputStream out)       创建一个缓冲输出流
BufferedOutputStream(OutputStream out, int size)  创建一个指定缓冲区大小size的缓冲输出流

常用方法:

flush()                             刷新缓冲输出流
write(byte[] b, int off, int len)   将指定数组中的一部分字节写入该缓冲输出流
write(int b)                        将指定字节写入该缓冲输出流
public void close( )                关闭该流,释放资源

BufferedInputStream读取数据:
构造方法:

BufferedInputStream(InputStream in)           创建一个缓冲输入流
BufferedInputStream(InputStream in, int size) 创建一个指定缓冲区大小size的缓冲输入流

常用方法:

public void read()                          读取该缓冲输入流中的下一个字节
public void read(byte[] b, int off, int len)从缓冲输入流中读取指定数组中的一部分字节
public void close( )                		关闭该流,释放资源

程序小练习:

1、编写程序,获取指定目录下 所有的.java结尾的文件,打印出文件的绝对路径(包含 子文件夹中的.java文
package com.task.cn;

import java.io.File;

public class test {
    public static void main(String[] args) {

        //获取指定目录下 所有的.java结尾的文件, 打印出文件的绝对路径(包含 子文件夹中的.java文
        File f1 = new File("D:\\DOOR");
        dayin(f1);

    }
    private static void dayin(File f1) {

        File[] files = f1.listFiles();
        for (File f2 : files) {
            if (f2.isDirectory()){
                 dayin(f2);
            }else{
                if (f2.getName().endsWith("java")){
                    System.out.println(f2.getAbsolutePath());
                }
            }
        }
    }
}
2、编写程序,删除 指定目录下的 所有文件与文件夹  (包含子文件夹)
package com.task.cn;

import java.io.File;

public class test1 {
    public static void main(String[] args) {

        File f1 = new File("C:\\mmm");
        remove(f1);
    }

    private static void remove(File f1) {

            File[] files = f1.listFiles();
            for (File f2 : files) {

                if (f2.isDirectory()) {
                    remove(f2);
                } else {
                    f2.delete();
                }
            }
            f1.delete();
    }
}
3、复制MP3文件
public class test1 {
    public static void main(String[] args) throws IOException {
       
        FileInputStream in = new FileInputStream("D:\\蓝莲花.mp3");
        FileOutputStream out = new FileOutputStream("C:\\蓝莲花.mp3");
        
        byte[] bytes = new byte[1024 * 8];
        int len = 0;
        while ((len = in.read(bytes)) != -1) {
            out.write(bytes, 0, len);
        }
        in.close();
        out.close();
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值