IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> JavaSE——基础知识回顾17文件+I/O流 -> 正文阅读

[Python知识库]JavaSE——基础知识回顾17文件+I/O流

文章目录



前言

少说话,多做事


以下是本篇文章正文内容,下面案例可供参考

一、文件【File】的基本操作

由于涉及到文件【File】的知识点很少也非常简单,我就直接上案例了 里面有具体的注释,今天的重点是I/O流。
案例如下:


import java.io.File;
import java.text.SimpleDateFormat;

public class Test01 {
    public static void main(String[] args) {
        /**
         * 知识点:File类(文件类)
         *
         * 含义:是文件和目录路径名(文件夹)的抽象表示
         *
         * 注意:File只关注文件本身的信息,而不能操作文件里面的内容
         *
         * 需求1:通过程序,获取已知文件的信息
         */
        //创建File类的对象
        File file=new File("C:\\Users\\雍仲\\Desktop\\编码王子的宝库.txt");
        System.out.println("获取绝对路径:"+file.getAbsolutePath());
        System.out.println("获取文件名字:"+file.getName());
        System.out.println("该文件是否可读:"+file.canRead());
        System.out.println("该文件是否可写:"+file.canWrite());
        System.out.println("是否隐藏:"+file.isHidden());
        System.out.println("获取文件长度(字节):"+file.length());
        System.out.println("判断是否为文件:"+ file.isFile());


        //最后修改时间
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("最后修改的时间:"+sdf.format(file.lastModified()));



/**
         * 知识点:File类(文件类)
         *
         * 含义:是文件和目录路径名(文件夹)的抽象表示
         *
         * 注意:File只关注文件本身的信息,而不能操作文件里面的内容
         *
         * 理解:绝对路径 和 相对路径
         *
         * 相对路径:相对于项目的路径
         * 绝对路径:路径中包含盘符(具体路径)
         */

        //test.txt -> 相对路径
        File file = new File("test.txt");

        //绝对路径 -> C:\2107workspace\Day22\test.txt
        System.out.println("获取绝对路径:" + file.getAbsolutePath());

    }
}

文件的层级遍历与创建文件


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

public class Test03 {
    public static void main(String[] args) throws IOException {
        /**
         * 知识点:File类
         *
         * 需求2:通过程序,判断指定路径的文件是否存在,如果不存在,则创建该文件
         * 下面按各种情况来解决该问题
         * 		1)目录已存在的情况
         * 		2)有一个层级的目录不存在的情况
         * 		3)有多个层级的目录不存在的情况
         */
        File file = new File("file01\\file02\\file03\\test.txt");

        //获取父路径对象(file01\\file02\\file03)
        File parentFile = file.getParentFile();

        if(!parentFile.exists()){//文件夹不存在
            //创建多层文件夹
            parentFile.mkdirs();
        }

        if(!file.exists()){//文件不存在
            //创建文件
            file.createNewFile();
        }

    }
}

二、I/O流部分

(1)、什么是I/O流

概念图:
在这里插入图片描述

I: InputStream:是所有输入流的基类,是一个抽象类。
O:OutputStream:是所有输出流的基类,同样也是一个抽象类
流:一种比较抽象的概念,类似于水管,由于数据的传入与传出是一点一点地输出,类似于将水库中的水通过水管一点一点地送到家里,最后关闭水龙头(在流的操作中最后一步需要用.close方法来关闭流对象就类似于关水龙头

注意:此处所说的输入流与输出流是站在程序的角度上来看,从程序往外输出便是输出流(OutputStream),同理如果是从外向程序里输入数据便是输入流(InputStream)。

理解图:
在这里插入图片描述

(2)、流的分类

2.1 按单位分:

  1. 字节流:以字节为单位,可以读写所有数据
  2. 字符流:以字符为单位,只能读写文本数据

2.2 按功能分:

  1. 节点流:具有实际传输数据的读写功能
  2. 过滤流:再借点流的基础上增强功能

2.3按方向分:

  1. 输入流:将<存储设备>中的内容读入到<内存>中。
  2. 输出流:将<内存>中的内容写入到<存储设备>中。

三、流的详解

(1)字节流:

在这里插入图片描述

(2)字节节点流

2.1 FileOutputStream(底层继承于OutputStream):

public void write(byte [ ] b)//一次性写多少个字节,将数组 b 中所有字节写入到输出流。后面有案例

2.2 FileInputStream (底层继承于InputStream):

public int read(byte [ ] b) //从流中读取多个字节,将读到的内容存入b数组,返回实际独到的字节数;如果达到文件的尾部,则返回 -1.后面案例演示
在这里插入图片描述

案例演示:


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

public class Copy02 {
    public static void main(String[] args) throws IOException {
        /**
         * 需求:拷贝文本文件 - 读一个字节写一个字节
         * 1)抛异常的方式
         * 以1024位一个单位来读取
         */
        //创流对象
        FileInputStream fis=new FileInputStream("io.txt");
        FileOutputStream fos=new FileOutputStream("copyio02.txt");
        //读取数据
        byte [] bs = new byte[1024];
        int len;
        while ((len=fis.read(bs))!=-1){
            fos.write(bs,0,len);
        }
        //关闭流
        fis.close();
        fos.close();
    }
}

(3)字节过滤流

3.1缓冲流:BufferedOutputStream/BufferedInputStream

在这里插入图片描述

提高IO效率,减少访问磁盘的次数
数据存储于缓冲区中,flush是将缓冲区的内容写入文件中,也可以直接close。

3.2对象流:ObjectOutputStream/ObjectInputStream

特点;
1、增强了缓冲区的功能
2、增强了读写的8种基本数据类型和字符串功能
3、增强了读写对象的功能:
例如:
------------ 1、readObject()从流中读取一个对象
-------------2、writeObject(Object obj) 向流中写入一个对象

总结

更新中…勿催

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-23 16:38:21  更:2021-08-23 16:39:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:17:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码