IO流笔记

news2024/12/26 9:22:26

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

文件基础知识

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

创建文件

在这里插入图片描述

package org.example;
import org.junit.Test;

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

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

    }
    @Test
    //方式1:new File(Strin pathname)
    public void create01(){
        File file = new File("d:\\news.txt");
        try{
            file.createNewFile();
            System.out.println("创建成功");
        } catch (IOException e){
            e.printStackTrace();
        }
    }
    @Test
    //方式2:new File(File parent,Stirng chile)//根据父目录文件+子路径构成
    public void create02(){
        File parentFile=new File("d:\\");
        String fileName="news2.txt";
        //在内存中创造了一个File对象
        File file = new File(parentFile,fileName);
        try{
            //将文件真正的创建到硬盘上
            file.createNewFile();
            System.out.println("创建成功");
        } catch (IOException e){
            e.printStackTrace();
        }
    }
    @Test
    //方式3:new File(String parent,Stirng child)//根据父目录+子路径构建
    public void create03(){
        String parentPath ="d:\\";
        String fileName = "news3.txt";
        //在内存中创造了一个File对象
        File file = new File(parentPath,fileName);
        try{
            //将文件真正的创建到硬盘上
            file.createNewFile();
            System.out.println("创建成功");
        } catch (IOException e){
            e.printStackTrace();
        }
    }
}

output:
在这里插入图片描述

文件操作

package org.example;

import org.junit.Test;

import java.io.File;
import java.sql.SQLOutput;

public class FileInformation {
    public static void main(String[] args) {
        
    }
    @Test
    //获取文件的信息
    public void info(){
        //先创建文件对象
        File file=new File("d:\\news.txt");
        //文件名
        System.out.println("文件名"+file.getName());
        System.out.println("绝对路径"+file.getAbsoluteFile());
        System.out.println("父级目录"+file.getParent());
        System.out.println("文件大小(字节)"+file.length());
        System.out.println("文件是否存在"+file.exists());
        System.out.println("是不是一个文件"+file.isFile());
        System.out.println("是不是一个目录"+file.isDirectory());

    }
}

output:
在这里插入图片描述

目录的创建 及 目录与文件的删除

在这里插入图片描述
注意:是删除空目录,文件是不是空的都能删除。

package org.example;
import org.junit.Test;

import java.io.File;
import java.io.IOException;
import java.sql.SQLOutput;

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

    }
    @Test
    public void m1(){
        String filePath="d:\\news.txt";
        File file=new File(filePath);
        if(file.exists()){
            if(file.delete()){
                System.out.println("删除成功");
            }else{
                System.out.println("删除失败");
            }
        }else{
            System.out.println("文件不存在");
        }
    }
    @Test
    //Java中目录也被看作文件
    public void m2(){
        String directoryPath="d:\\demo02";
        File file=new File(directoryPath);
        if(file.exists()){
            if(file.delete()){
                System.out.println("删除成功");
            }else{
                System.out.println("删除失败");
            }
        }else{
            System.out.println("文件不存在");
        }
    }
    @Test
    ///判断 D:\\demo\\a\\b\\c 目录是否存在,如果存在就提示已经存在,否则就创建
    public void m3(){
        String directoryPath="d:\\demo\\a\\b\\c";
        File file=new File(directoryPath);
        if(file.exists()){
            System.out.println("目录存在");
        }else{
            if(file.mkdirs()){
                System.out.println("该目录创建成功");
            }else{
                System.out.println("创建失败");
            }
        }
    }
}

IO流原理和分类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上图表中的四个类都是抽象类,不能直接使用
在这里插入图片描述

FileInputStream

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

package org.example.InputStream;
import org.junit.Test;

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

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

    }

    /**
     * 演示读取文件
     * 单个字符的读取,效率比较低
     * —————>使用read(byte[] b)优化
     */
    @Test
    public void readFile01(){
        String filePath="d:\\hello.txt";
        int readData=0;
        FileInputStream fileInputStream = null;
        {
            try {
                //创建FileInputStream对象,用于读取文件
                fileInputStream = new FileInputStream(filePath);
                //从该输入流读取一个字节的数据,如果没有输入可用,此方法将返回-1。
                while((readData = fileInputStream.read())!=-1){
                    System.out.print((char)readData);//转成char
                }
            } catch (IOException e) {
                throw new RuntimeException(e);
            } finally {
                try {
                    fileInputStream.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }

    /**
     * 使用read(byte[] b)读取文件提高效率
     * 
     * 在下面的代码中,buf数组的作用是用于存储从文件中读取到的字节数据。在读取文件内容的过程中,
     * 通过fileInputStream.read(buf)方法将读取到的字节数据存储在buf数组中。buf数组的大小为8个字节,即byte[8],
     * 一次最多读取8个字节的数据。然后,通过new String(buf, 0, readLen)将buf数组中的字节数据转换为字符串,并打印出来。
     * 因为读取文件的效率通常比较高,所以预先申请一个较小的字节数组,每次读取一部分数据到该数组中,可以提高读取效率。
     * buf数组的大小可以根据实际需要进行调整,以适应不同的文件大小和性能要求。
     */
    @Test
    public void readFile02(){
        String filePath="d:\\hello.txt";
        byte[] buf=new byte[8];//一次读取8个字节
        int readLen=0;
        FileInputStream fileInputStream = null;
        {
            try {
                //创建FileInputStream对象,用于读取文件
                fileInputStream = new FileInputStream(filePath);

                while((readLen=fileInputStream.read(buf))!=-1){
                    System.out.print(new String(buf,0,readLen));//显示
                }
            } catch (IOException e) {
                throw new RuntimeException(e);
            } finally {
                try {
                    fileInputStream.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/911398.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

innovus如何设置size only

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 给instance设置size only属性命令如下: dbset [dbGet top.inst.name aa/bb -p] .dontTouch sizeOk 给一个module设置size only需要foreach循环一下: foreach inst [dbGet top.…

Docker常用操作命令(二)

Docker常用操作命令(二) 11、进入容器 docker exec -it 容器名称or容器ID /bin/bash [rootzch01 ~]# docker exec -it 973ff3caff19 /bin/bash 退出容器 root973ff3caff19:/# exit 12、查看容器中的进程 docker top 容器名称or容器ID [rootzch01 ~]# docker top 973ff3c…

Sui第四轮资助:16个团队瓜分

近日,Sui基金会公布了第四轮开发者资助名单,受助项目均是集中在DeFi、支付、基础设施、游戏、预言机等领域的Sui生态项目,他们是从2023年7月1日之前提交的申请中选出的。在此时间之后提交的任何项目目前正在审查中。 在前三轮资助中累积发放…

魔术般的平板式扫描仪,OCR好帮手,文档数字化一键搞定

平板式扫描仪是一种常见的扫描设备,通常用于将纸质文档转换为数字格式(OCR),一般的复印店和办公室等场所使用的基本上都是这种扫描仪。它由一个平坦的玻璃板和一个移动的扫描头组成。用户将纸质文档放置在平板上,然后通…

WebDAV之π-Disk派盘 + 一羽记帐

一羽记帐是一款真正让你体验3S极速记账的轻量级APP。针对个人记账,没有花哨冗余的功能。界面美丽、无广告、极速启动、功能全面。一羽记帐功能涵括广,基本可以满足90%人的记账需求。完全无侵入、百分百无广告,无需担心数据安全,所有的操作都不经过任何第三方。 π-Disk派盘…

Leetcode.73矩阵置零

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法 class Solution {public void setZeroes(int[][] matrix) {int m matrix.length, n matrix[0].length;boolean[] row new boolean[m];boolean[] col…

聚观早报 | 网龙发布EDA白皮书;日产合资旗下品牌使用东风纯电

【聚观365】8月22日消息 网龙发布EDA白皮书 日产合资公司旗下自主品牌将使用东风纯电平台 vivo Pad Air评测 辛巴818五周年专场带货GMV达22.3亿 X删除2014年12月前大多数图片和推文链接 网龙发布EDA白皮书 近日消息,由北京师范大学和联合国教科文组织教育信息…

vue table合并行 动态列名

需求: 1.合并行,相同数据合并 2,根据后端返回数据动态显示列名, 我这个业务需求是,每年增加一列,也就是列名不是固定的,后端返回数据每年会多一条数据,根据返回数据显示列名 实现: html <el-table v-loading"loading" :data"dataList" :span-metho…

联合索引为什么是最左匹配原则

首先索引在使用B树时&#xff0c;B树是一个排序的树&#xff0c;根据节点大小进行排序。 当使用联合索引时其结构如下如图&#xff1a; 此时如果我们要查找第二个字母为d的目标数据like ‘%d, 如果索引来查找&#xff0c;那么根节点的第二个a小于d所有从根节点向右子树查找&a…

《vue3实战》在created生命周期中运用slice()方法结合element plus组件实现电影评价系统的分页

目录 前言 电影评价系统的分页是什么&#xff1f;它具体的作用体现在哪些方面&#xff1f; 一、slice的含义、语法和作用以及created的作用 slice是什么&#xff1f;slice有什么语法&#xff1f;slice的作用体现在哪些方面&#xff1f; created生命周期的作用&#xff1a;…

工业制造提升生产效率,其实有个简单办法!

当谈及现代电力系统的运行与管理&#xff0c;配电柜监控无疑是一个至关重要的环节。配电柜作为电力分配与控制的核心节点&#xff0c;其稳定运行直接关系到整个电力系统的安全性和可靠性。 随着电力需求的不断增长以及能源网络的复杂性提升&#xff0c;传统的人工巡检和维护已经…

企业通过CRM怎样实现无纸化办公?

在传统的办公模式中&#xff0c;经常要使用大量的纸张来记录各种信息&#xff0c;比如合同、报表等。想象一下&#xff0c;如果文件柜被盗或者着火&#xff0c;重要数据会不会丢失&#xff1f;如果需要查看某份文件&#xff0c;能不能及时找到&#xff1f;如果答案是否定的&…

OrienterNet: visual localization in 2D public maps with neural matching 论文阅读

论文信息 题目&#xff1a;OrienterNet: visual localization in 2D public maps with neural matching 作者&#xff1a;Paul-Edouard Sarlin&#xff0c; Daniel DeTone 项目地址&#xff1a;github.com/facebookresearch/OrienterNet 来源&#xff1a;CVPR 时间&#xff1a…

探究与思考!城市燃气的安全管理问题有哪些?解决措施又有哪些?

文章来源&#xff1a;网络 关键词&#xff1a;智慧燃气、智慧燃气场站、城市燃气场站、设备设施数字化、数字孪生、工业互联网 针对城市燃气安全管理现状&#xff0c;如用户端安全隐患不断增多、燃气管道系统规划不科学、燃气安全监管制度不完善等&#xff0c;进行科学的分析&…

Python实现SSA智能麻雀搜索算法优化Catboost分类模型(CatBoostClassifier算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新型的群智能优化算法&#xff0c;在2020年提出&a…

「2024」预备研究生mem-分析推理强化:排队列(上)

一、分析推理强化&#xff1a;排队列(上) 二、练习

华为云classroom赋能--Toolkit系列插件DevSecOps助力开发者提速

一、前言 DevOps的概念想必大家都不陌生&#xff0c;它是一组过程、方法与系统的统称&#xff0c;通过它可以对交付速率、协作效率、部署频率速率、质量、安全和可靠性等进行提升改善。相比传统的软件开发模式&#xff0c;它是一种工作方式和文化的转变&#xff0c;把开发者和…

git Update failed cannot lock ref

报错详情 解决方案 百度了很多方案&#xff0c;过滤出了有效方案 去该项目下的.git文件里找到报错文件&#xff0c;本例中即为&#xff1a;.git/refs/tags/pre-RELEASE-PRE-20230817-03 删除该文件&#xff0c;重新pull&#xff0c;pull成功问题解决

江南大学采购ZJ-3型精密D33测试仪四件套设备

江南大学采购ZJ-3型精密D33测试仪四件套设备 江南大学&#xff08;Jiangnan University&#xff09;&#xff0c;坐落于江苏省无锡市&#xff0c;是中华人民共和国教育部直属高校&#xff0c;由教育部、江苏省人民政府共建 &#xff0c;国家“双一流”建设高校&#xff0c; “…

爬虫用拨号好还是HTTP爬虫ip池好?

程序员小伙伴们&#xff0c;在进行爬虫时&#xff0c;你是否曾纠结于选择拨号还是代理&#xff1f;不要犯愁&#xff01;今天我将与你分享一些实用的择优技巧&#xff0c;帮助你在爬虫之路上实现更高效的提速&#xff01; 一、拨号和HTTP爬虫ip的优劣势分析 1、拨号 优势&…