java 常用IO流学习整理

java 常用IO流学习整理

File类
1:File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
2:demo


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

/**
 * 文件的读取与修改
 */
public class demo1 {

    public static void main(String[] args) throws IOException {
        File dir1 = new File("F:/demo1/dir1");
        if (!dir1.exists())          //当不存在该路径时则自动创建
            dir1.mkdir();
        else
            System.out.println("文件夹已经存在");
        File dir2 = new File(dir1, "dir2");
        if (!dir2.exists())              //如果仍旧不存在,则继续创建
            dir2.mkdir();
        else
            System.out.println("子文件夹已经存在");
        File dir4 = new File(dir1, "dir3/dir4");        //在dir1下创建一个文件目录
        if (!dir4.exists())
            dir4.mkdirs();
        else
            System.out.println("文件目录已经存在");
        File file = new File(dir2, "xiaoming.txt"); // 创建以dir2为父目录,名为"xiaoming.txt"的File对象
        if (!file.exists())                           // 如果还不存在,就创建
            file.createNewFile();
        else {
            System.out.println("该文件已经存在");
            System.out.println("文件名:" + file.getName() + "  文件路径:" + file.getPath() + "  文件父目录" + file.getParent());
            file.delete();
        }
        file = new File("F:/demo1/dir1");
        File files[] = file.listFiles();
        for (File f : files)
            System.out.println(f.getName());            //获取文件夹下的所有子文件
    }
}
/*
文件夹已经存在
子文件夹已经存在
文件目录已经存在
该文件已经存在
文件名:xiaoming.txt  文件路径:F:\demo1\dir1\dir2\xiaoming.txt  文件父目录F:\demo1\dir1\dir2
dir2
dir3
 */

IO 流原理
1:这里的输入输出流要分清,输入流指的是从源文件到程序,而输出流指的是从程序到目标文件
这里写图片描述
这里写图片描述
2:这里输入输出流按输入类型可分为两类,字节流(8 bit),字符流(16 bit) ,字节流以byte为单位传输,字符流以char为单位传输
这里写图片描述
3:这里的IO流种类虽然非常多,但是都是基于以上四个基类派生的
这里写图片描述

文件流
写入文件FileWriter
1:demo

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

public class demo2 {
    public static void main(String[] args) throws IOException {
        FileWriter fw = new FileWriter("F:\\demo1\\dir1\\dir2\\xiaoming.txt");//文件不存在会自动创建
        fw.write("my name id XiaoMing1");
        //fw.flush();         //注意一定要刷新才能写入
        fw.close();            //如果不刷新,直接关闭也会写入,this.writeBytes();这是因为底层源码都执行了  if (this.bb.position() > 0) {this.writeBytes()}; 最终将程序中的内容输出了
    }
}

读取文件FileReader
1:demo

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

public class demo2 {
    public static void main(String[] args) throws IOException {
        FileReader fr = new FileReader("F:\\demo1\\dir1\\dir2\\xiaoming.txt");//前提保证文件存在
        char[] buf = new char[1024];            //创建一个缓存数组
        int len = 0;
        while ((len = fr.read(buf)) != -1) {
            System.out.println(new String(buf, 0, len));
        }
        fr.close();
    }
}
//my name id XiaoMing1

缓冲流
1:为了提高数据读写的速度,Java API提供了带缓冲功能的流类,在使用这些流类时,会创建一个内部缓冲区数组,对于输出的缓冲流,写出的数据会先在内存中缓存,使用flush()将会使内存中的数据立刻写出
2:demo

import java.io.*;

public class demo2 {
    public static void main(String[] args) throws IOException {
        String str = null;
        BufferedReader br = new BufferedReader(new FileReader("F:\\demo1\\dir1\\dir2\\xiaoming.txt"));
        System.out.println(br.readLine());
        while ((str = br.readLine()) != null) {       //一次读入一行
            System.out.println(str);
        }
        br.close();
        BufferedWriter bw = new BufferedWriter(new FileWriter("F:\\demo1\\dir1\\dir2\\xiaoming.txt"));
        bw.write("First\n");
        bw.newLine();           //换行
        bw.write("Second");
        bw.flush();
        bw.close();
    }
}
//my name id XiaoMing1

本文参考该博客撰写:https://www.cnblogs.com/baixl/p/4170599.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小伙子渴望力量么

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值