java-IO流

IO流

输入:input
输出:output

流一:
Java的IO主要包含三个部分:

  • 流式部分――IO的主体部分
  • 非流式部分――主要包含一些辅助流式部分的类
  • 文件读取部分的与安全相关的类以及与本地操作系统相关 的文件系统的类

在这里插入图片描述
流二
Java中的流操作分为两种

  • 基于字节流(InputStream读取,OutputStream写入)
  • 字符流(Reader读取,Writer写入)

Java IO流可以概括为:两个对应、一个桥梁。两个 对应指字节流(Byte Stream)和字符流(Char Stream)的对应,输入流和输出流的对应。一个桥梁指从字节流到字符流的桥梁。

流三

Java中,设计了四个抽象类来表示流:

  • InputStream,字节流,读取数据
  • OutputStream,字节流,写入数据
  • Reader,字符流,读取数据
  • Writer,字符流,写入数据

其他多种多样变化的流均是继承了它们,并进行豪华 装饰派生出来的加强版

File类

File类对象表示磁盘上的文件或目录。它提供了与平 台无关的方法来对磁盘上的文件或目录进行操作。
在这里插入图片描述
例如:

import java.io.File;
import java.io.IOException;

public class FileDemo {
    public static void main(String[] args) {
        File file = new File("aa.txt");
        File file1 = new File("d:/bb");
        File file2 = new File("d:/aa/ee");

        try {
            boolean b1 = file.createNewFile();//创建txt文件
            boolean b2 = file1.mkdir();//创建aa文件夹
            boolean b3 = file2.mkdirs();//创建aa..bb文件夹
            if(b1 && b2 && b3){
                System.out.println("创建成功");
            }else {
                System.out.println("创建失败");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

在这里插入图片描述
创建成功
在这里插入图片描述

FileInputStream和FileOutputStream

在这里插入图片描述
在这里插入图片描述

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

public class FileInputDemo {
    public static void main(String[] args) {
        FileOutputStream fos = null;
        FileInputStream fis = null;
        try {
           fis = new FileInputStream("d:/aa/4.jpg");
           fos = new FileOutputStream("d:/bb/4.jpg");
            byte[] b = new byte[1024];
            int result = 0;
            try {
                while ((result = fis.read(b))!=-1){
                    fos.write(b,0,result);
                }
            }catch (IOException e){
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }finally {
            try {
                fis.close();
                fos.close();

            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
}

这样就把d盘aa里面的4.jpg复制到了d盘bb里
在这里插入图片描述在这里插入图片描述

BufferedReader和BufferedWriter

BufferedReader与BufferedWriter实现了自带缓冲区的字符流高效读写,其最小操作单元为一个字符(16位) ,同时,我们也可以自己指定缓冲区的大小,默认的缓冲区有8192个字符,通常情况下已经足够了。

import java.io.*;

import static java.lang.System.*;

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

        BufferedWriter bw = null;
        BufferedReader br = null;

        br = new BufferedReader(new InputStreamReader(in));
        try {
            bw = new BufferedWriter(new FileWriter("d:/aa/1.txt"));
            String temp = null;
            while ((temp = br.readLine())!=null){
                if(temp.equals("over")){
                    break;
                }
                bw.write(temp);
                bw.newLine();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                bw.close();
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

这样做的好处就是,可以减少对磁盘的 I/O动作,借以提高程序的效率

在这里插入图片描述

在这里插入图片描述

java字符集

在JVM内部,统一使用基于Unicode字符集的字符编码

public class EncodingDemo {
    public static void main(String[] args) {
        System.out.println(System.getProperty("file.encoding"));
        //显示本机的编程语言
    }
}

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值