6.4 通过IO实现文件的读取与写入

6.4 通过IO实现文件的读取与写入

  • 1. File类及常用方法
  • 2. 通过字节字符流实现文件读取与写入
    • 1. 流
    • 2. 字节输入输出流 InputStream与OutputStream
    • 3. 字符输入输出流实现文本读取与写入
    • 4. 字节流与字符流的相互转化
  • 3. 缓冲区及应用
  • 4.

1. File类及常用方法

在这里插入图片描述

package com.imooc.io;

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

public class FileSample {
    public static void main(String[] args) {
        File f = new File("d:/b.txt");
        File d = new File("d:/电影/华语/大陆");
        try {
            boolean r1 = f.createNewFile();
            System.out.println(f.getPath() + "文件创建是否成功:" + r1);
            System.out.println(f.getPath() + "是否存在:" + f.exists());
            System.out.println(f.getPath() + "是否是目录:" + f.isDirectory());
            System.out.println(f.getPath() + "是否是文件:"+f.isFile());
            System.out.println(f.getPath() + "的大小:"+f.length());
            System.out.println(f.getPath() + "的文件名:"+f.getName());
            boolean r2 = f.delete();
            System.out.println(f.getPath() + "文件是否删除成功:" + r2);
            System.out.println(f.getPath() + "是否存在:"+ f.exists());
            boolean r3 = d.mkdirs();
            System.out.println("[" + d.getPath() + "]目录是否创建成功:" + r3);
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}

2. 通过字节字符流实现文件读取与写入

1. 流

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

2. 字节输入输出流 InputStream与OutputStream

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

package com.imooc.io;

import java.io.*;

public class FileCopySample {
    public static void main(String[] args) {
        File source = new File("d:/demo.jpg");
        File target = new File("d:/demo1.jpg");
        InputStream fis = null;
        OutputStream fos = null;
        try {
            //实例化InputStream对象:读文件
            fis = new FileInputStream(source);
            //实例化Outputstream对象:写文件
            fos = new FileOutputStream(target);
            byte[] bs = new byte[1024];
            int len;
            //利用read方法循环读取的字节数据,并进行处理
            while((len = fis.read(bs)) != -1){
                System.out.println(len);
                //将读取到到字节数组写入到输出流
                fos.write(bs,0,len);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {        //通过finally块确保fis/fos对象执行close方法
            if(fos != null){
                try {
                    fos.close();//关闭写
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(fis != null){
                try {
                    fis.close();//关闭读
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

3. 字符输入输出流实现文本读取与写入

在这里插入图片描述

package com.imooc.io;

import java.io.*;

public class TextFileSample {
    /*FileReader读取文本文件案例*/
    public void readTextFile(){
        Reader reader = null;
        try{
            File file = new File("d:/test.txt");
            //实例化Reader对象
            reader = new FileReader(file);
            int ch = 0;
            //逐个字符读取
            while((ch = reader.read()) != -1){
                System.out.print((char)ch);//UTF-8编码集
            }
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            if(reader != null){
                try {
                    //关闭reader对象
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    /*Writer写入文本文件过程*/
    public void writeTextFile(){
        Writer writer = null;
        try {
            File file = new File("d:/test.txt");
            //创建文件
            if (!file.exists()) {//判断文件是否存在
                file.createNewFile();//不存在,创建对于文件
            }
            //实例化writer对象
            writer = new FileWriter(file);
            //write()方法用于覆盖已有文件内容
            writer.write("这是一个新文件New");
            //append()方法用于在文件末尾追加
            writer.append(":Append内容");
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            //关闭writer对象
            if(writer != null){
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    
    public static void main(String[] args) {
        TextFileSample sample = new TextFileSample();
        sample.writeTextFile();
        sample.readTextFile();
    }
}

4. 字节流与字符流的相互转化

在这里插入图片描述
了解即可

package com.imooc.io;

import java.io.*;

public class TextFileSample {
    /**
     * 字节转字符读取文件内容
     * 字节输入流(InputStream)转字符输入流(InputStreamReader)
     */
    public void isrSample(){
        InputStream fis = null;
        InputStreamReader isr = null;
        try{
            File file = new File("d:/test.txt");
            fis = new FileInputStream(file);
            isr = new InputStreamReader(fis,"UTF-8");
            StringBuffer buffer = new StringBuffer();
            while(isr.ready()){
                buffer.append((char)isr.read());
            }
            System.out.println(buffer.toString());
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            if(isr != null){
                try {
                    isr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(fis != null){
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    /**
     * 字节转字符写入文件内容
     * 字节输出流(OutputStream)转字符输出流(OutputStreamWriter)
     */
    public void oswSample() {
        OutputStream fos = null;
        OutputStreamWriter osw = null;
        try {
            File file = new File("D:/test.txt");
            //创建文件
            if (!file.exists()) {
                file.createNewFile();
            }
            fos = new FileOutputStream(file);
            osw = new OutputStreamWriter(fos, "UTF-8");
            osw.write("这是一个新文件!");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (osw != null) {
                    osw.close();
                }
                if (fos != null) {
                    fos.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    public static void main(String[] args) {
        TextFileSample sample = new TextFileSample();
        sample.isrSample();
        sample.oswSample();
    }
}

3. 缓冲区及应用

在这里插入图片描述

4.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

1、C语言:数据类型/运算符与表达式

数据类型/运算符/表达式 1.数据类型与长度2.常量3.声明4. 运算符5. 表达式 1.数据类型与长度 基本数据类型 类型说明char字符型,占用一个字节,可以存放本地字符集中的一个字符int整型,通常反映了所有机器中整数的最自然长度float单精度浮点…

独占锁ReentrantLock的原理

类图结构 ReentrantLock是可重入的独占锁,同时只能有一个线程可以获取该锁,其他获取该锁的线程会被阻塞而被放入该锁的AQS阻塞队列里面。 首先看下ReentrantLock的类图以便对它的实现有个大致了解。 从类图可以看到,ReentrantLock最终还是使…

如何使用静态IP代理解决Facebook多账号注册并进行网络推广业务?

在当今的数字时代,社交媒体成为了企业进行网络推广的一个重要途径,其中,Facebook是最受欢迎的社交媒体之一,因为它可以让企业通过创建广告和页面来推广他们的产品或服务。 但是,使用Facebook进行网络推广时&#xff0…

智能监控:业务监控新选择,效率提升新动力

前言 随着科技的飞速发展,企业对于业务的稳定性和连续性要求越来越高。传统的监控方式虽然在一定程度上能够保证业务的正常运行,但在面对复杂多变的业务场景和日益增长的数据量时,往往显得力不从心。为了解决这一问题,观测云在提…

金蝶云星空与阿里企业邮箱的对接轻松实现

通过数环通,您可以使用不到几分钟的时间即可实现金蝶云星空与阿里企业邮箱的对接与集成,从而高效实现工作流程自动化,降本增效! 1.产品介绍 阿里企业邮箱是由阿里巴巴集团旗下的阿里云提供的一种专业的企业邮箱服务,具…

浅谈安科瑞直流表在孟加拉某能源公司的应用

摘要:本文介绍了安科瑞直流电表在孟加拉某能源公司的应用。主要用于光伏直流柜内,配合分流器对汇流箱的输出电流电压等进行测量,并采集配电现场的开关信号,装置带有RS485接口可以把测量和采集的数据和设备状态上传。 Abstract: T…

http介绍

http http工作原理 工作于客户端—服务端架(client/server)构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。 Web服务器有:Nginx,Apache服务器,IIS服务器(Internet Information …

大数据分析案例-基于LinearRegression回归算法构建房屋价格预测模型

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

Centos7 MongoDB安装

基础配置(Centos7.5镜像,2核2GB内存,50GB硬盘) 主机名IPmongodb192.168.100.124 (在MongoDB官网有linux安装MongoDB的步骤) (1)配置yum源 [rootmongodb ~]# cat /etc/yum.repos.d…

24/1/8

传奇登录界面; #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {//窗口设置this->setWindowTitle("传奇");//窗口名this->setWindowIcon(QIcon("C:\\Users\\21528\\Desktop\\图标.png"));//窗口图标th…

用MATLAB求最短路径(graphshortestpath)和求最小生成树(minspantree),代码演示

求最短路径(graphshortestpath),求最小生成树(minspantree) 文章目录 求最短路径(graphshortestpath),求最小生成树(minspantree)1、最短路径问题2、最小生成…

Linux文件系统与日志管理

目录 一、Linux文件系统 1、inode 与 block 详解 1.1 inode 和 block 概述 1.2 inode表的内容 1.3 查看文件的inode号码 1.4 模拟innode号耗尽故障处理 2、访问文件的流程 3、文件恢复 3.1 恢复误删除的ext3格式文件 3.2 恢复误删除的 xfs 格式文件 二、Linux日志…

Java集合框架深度解析:HashMap

Java中的HashMap是一种基于哈希表的实现,提供了快速的查找性能。在这篇深度解析中,我们将深入探讨HashMap**的实现原理、适用场景、潜在问题以及并发控制策略。 1. HashMap的实现原理 1.1 哈希表 HashMap内部基于哈希表实现,通过散列函数将…

如何下载YouTube上的Mobile ALOHA视频?不用安装任何软件,一分钟搞定,一些好用的小技能又增加了^_^

一、背景 最近几天被斯坦福大学的移动双臂机器人——Mobile ALOHA刷屏了,就是下面这款能做饭,能收拾家务的机器人。因为是斯坦福大学研发的,他们的许多demo都上传到了国外的视频网站YouTube上面,为了防止未来的某天梯子不好用&am…

数据结构-测试5

一、判断题 1.二叉树只能用二叉链表表示(F) 二叉树的存储结构有两种,顺序存储结构和链式存储结构 2. 装填因子是散列表的一个重要参数,它反映散列表的装满程度。(T) 装填因子越小,发生冲突的可能性越小 3. 在任何情况…

CSS 发光输入框动画

<template><view class="content"><input placeholder="请输入..." class="input" /> </view> </template><script></script><style>/* 设置整个页面的背景颜色为 #212121 */body{background-c…

数据结构与算法(九)图链式存储

邻接表 度&#xff1a;无向图的度&#xff1a;顶点与邻接点连接的边就做度。有向图的度&#xff1a;指向顶点的边叫做入度&#xff0c;由顶点指向其他邻接点的边叫做出度 顶点&#xff1a;存储自身顶点信息和指向下一个临界点的指针 邻接点&#xff1a;保存临接点的存储下标…

基于海洋捕食者算法优化的Elman神经网络数据预测 - 附代码

基于海洋捕食者算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于海洋捕食者算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于海洋捕食者优化的Elman网络5.测试结果6.参考文献7.Matlab代码…

mysql索引失效的情况

目录 1破坏最左前缀法则2在索引列上做任何计算、函数操作&#xff0c;会导致索引失效而转向全表扫描。3存储引擎不能使用索引中范围条件右边的列4Mysql在使用不等于时无法使用索引会导致全表查询5is null可以使用索引&#xff0c;但是is not null无法使用索引6like以通配符开头…

网络调试 UDP1,开发板用动态地址-入门6

https://www.bilibili.com/video/BV1zx411d7eC?p11&vd_source109fb20ee1f39e5212cd7a443a0286c5 1, 开发板连接路由器 1.1&#xff0c;烧录无OS UDP例程 1.2&#xff0c;Mini USB连接电脑 1.3&#xff0c;开发板LAN接口连接路由器 2. Ping开发板与电脑之间通信* 2.1 根据…