java中的I/O(8个案例+代码+效果图)

目录

1.File类

1)常用构造方法

1)File(String pathname)

2)File(String parent, String child)

3)File(File parent, String child)

2)常用方法

1)boolean canRead()

2)boolean canWrite()

3)boolean createNewFile() throws IOException

4)boolean delete()

5)boolean exists()

6)String getName()

7)String getPath()

8)boolean isDirectory()

9)boolean isFile()

10)long length()

11)String[] list()

12)File[] listFiles()

13)boolean mkdir()

14)boolean renameTo(File dest)

3)案例:File类的简单使用

1.代码

2.效果

4)遍历目录下的文件

1.代码

2.效果

5)遍历遍历文件以及文件夹下的所有文件

1.代码

2.效果

2.字节流

1)InputStream

1)int read()

2)int read(byte[] b)

3)void close()

2)OutputStream

1)void write(int b)

2)void write(byte[] b)

3)void flush()

4)void close()

3)案例:文件读取

1.代码

2.效果

 4)案例:文件写入

1.代码

2.效果

5)案例:文件的复制

1.代码

2.效果​编辑

3.字符流

Reader

1)int read()

2)int read(char[] cbuf)

3)void close()

Writer

1)void write(int c)

2)void write(char[] cbuf)

3)void write(String str)

4)void flush()

5)void close()

6)案例:字符流的读取

1.代码

2.效果

​编辑 7)案例:简易记事本

1.代码

2.效果


1.File类

1)常用构造方法

  1. 1)File(String pathname)

    • 通过将给定的路径名字符串转换为抽象路径名来创建一个新的 File 实例
    • 参数:pathname - 一个路径名字符串。
  2. 2)File(String parent, String child)

    • 根据父路径名字符串和子路径名字符串创建一个新的 File 实例。
    • 参数:
      • parent - 父路径名字符串。
      • child - 子路径名字符串。
  3. 3)File(File parent, String child)

    • 根据父抽象路径名和子路径名字符串创建一个新的 File 实例。
    • 参数:
      • parent - 抽象路径名作为此路径名的前缀。
      • child - 字符串作为此路径名的更多名称。

2)常用方法

  1. 1)boolean canRead()

    • 测试应用程序是否可以读取该文件
    • 返回值:如果文件可读,则返回 true
  2. 2)boolean canWrite()

    • 测试应用程序是否可以修改该文件
    • 返回值:如果文件可写,则返回 true
  3. 3)boolean createNewFile() throws IOException

    • 当且仅当不存在具有此抽象路径名指定名称的文件时,原子地创建一个由该抽象路径名命名的新空文件。
    • 返回值:如果操作成功则返回 true;如果已经存在这样的文件,则返回 false
    • 异常:可能抛出 IOException
  4. 4)boolean delete()

    • 删除由此抽象路径名表示的文件或目录
    • 返回值:如果成功删除了文件或目录,则返回 true;否则返回 false
  5. 5)boolean exists()

    • 测试此抽象路径名表示的文件或目录是否存在
    • 返回值:如果文件或目录存在,则返回 true
  6. 6)String getName()

    • 返回由此抽象路径名表示的文件或目录的名称
    • 返回值:此抽象路径名表示的文件或目录的名称。
  7. 7)String getPath()

    • 将此抽象路径名转换为路径名字符串
    • 返回值:表示此抽象路径名的路径名字符串。
  8. 8)boolean isDirectory()

    • 测试此抽象路径名表示的文件是否是一个目录
    • 返回值:如果此抽象路径名表示的文件是一个目录,则返回 true
  9. 9)boolean isFile()

    • 测试此抽象路径名表示的文件是否是一个标准文件
    • 返回值:如果此抽象路径名表示的文件是一个标准文件,则返回 true
  10. 10)long length()

    • 返回由此抽象路径名表示的文件的长度
    • 返回值:此抽象路径名表示的文件的长度(以字节为单位),如果文件不存在,则返回 0L
  11. 11)String[] list()

    • 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录
    • 返回值:指定目录中文件和目录名称的字符串数组,如果此抽象路径名不表示一个目录,或者发生 I/O 错误,则返回 null
  12. 12)File[] listFiles()

    • 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件
    • 返回值:表示目录中文件的抽象路径名数组,如果此抽象路径名不表示一个目录,或者发生了 I/O 错误,则返回 null
  13. 13)boolean mkdir()

    • 创建由此抽象路径名命名的目录
    • 返回值:如果已成功创建目录,则返回 true;如果由于父路径不存在等原因而无法创建目录,则返回 false
  14. 14)boolean renameTo(File dest)

    • 重新命名此抽象路径名表示的文件
    • 参数:dest - 新的抽象路径名。
    • 返回值:如果重命名成功,则返回 true;否则返回 false

3)案例:File类的简单使用

1.代码

package org.xiji.javaio;import java.io.File;
import java.io.IOException;public class FileOne {public static void main(String[] args) throws IOException {//创建一个文件对象File file = new File("D:\\myFirst\\myTxt.txt");System.out.println("文件是否存在:"+file.exists());//创建这个是创建的目录File file1 = new File("D:\\myFirst");file1.mkdir();System.out.println("文件是否存在:"+file.exists());//创建文件boolean newFile = file.createNewFile();System.out.println("文件是否创建成功:"+newFile);System.out.println("文件是否是绝对路径:"+file.isAbsolute());System.out.println("文件是否是目录:"+file.isDirectory());System.out.println("文件是否是文件:"+file.isFile());System.out.println("文件是否可读:"+file.canRead());System.out.println("文件是否可写:"+file.canWrite());System.out.println("文件是否隐藏:"+file.isHidden());System.out.println("文件大小:"+file.length());System.out.println("文件最后修改时间:"+file.lastModified());System.out.println("文件名:"+file.getName());System.out.println("文件路径:"+file.getPath());System.out.println("文件绝对路径:"+file.getAbsolutePath());System.out.println("文件父路径:"+file.getParent());System.out.println("文件是否是临时文件:"+file.isHidden());}
}

2.效果

4)遍历目录下的文件

1.代码
package org.xiji.javaio;import java.io.File;public class FileFor {public static void main(String[] args) {//遍历某个文件夹下的文件String path = "D:\\myFirst";File file = new File(path);File[] files = file.listFiles();for (File file1 : files) {System.out.println(file1.getName());}}
}

2.效果

5)遍历遍历文件以及文件夹下的所有文件

1.代码
package org.xiji.javaio;import java.io.File;public class FileForTwo {public static void main(String[] args){//递归遍历String path = "D:\\myFirst";File file = new File(path);myListFiles(file);}//文件递归遍历public static void myListFiles(File file){File[] files = file.listFiles();//判断文件是否为空if(files == null){return;}//遍历for (File file1 : files) {//判断是否为文件夹,是文件夹就继续遍历,不是就输出名字if(file1.isDirectory()){myListFiles(file1);}System.out.println(file1.getName());}}
}

2.效果

2.字节流

字节流用于读写二进制数据。Java中的字节流主要基于InputStreamOutputStream抽象类。

  • 1)InputStream

  • 这是所有字节输入流的超类。它定义了从源读取数据的基本方法。

    • 1)int read()

    • 从输入流中读取下一个字节的数据。返回值范围是0到255。如果已经到达流的末尾,则返回-1。
    • 2)int read(byte[] b)

    • 尝试从流中读取一定数量的字节,并将其存储在参数b指定的缓冲区中。返回实际读取的字节数;如果到达流的末尾,则返回-1。
    • 3)void close()

    • 关闭该流并释放与之关联的所有系统资源。
  • 2)OutputStream

  • 这是所有字节输出流的超类。它定义了将数据写入目标的基本方法。

    • 1)void write(int b)

    • 将指定的字节写入此输出流。
    • 2)void write(byte[] b)

    • 将b.length个字节从指定的字节数组写入此输出流。
    • 3)void flush()

    • 刷新该流的缓冲区。
    • 4)void close()

    • 关闭此输出流并释放与此流相关的任何系统资源。

具体实现类如FileInputStreamFileOutputStream等提供了文件相关的读写功能。

3)案例:文件读取

1.代码
package org.xiji.javaio;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;public class FileInput {public static void main(String[] args) throws IOException {//读取文件String path = "D:\\myFirst\\myTxt.txt";//文件读取流FileInputStream fis = new FileInputStream(path);int readInfo = 0;//读取文件while (true) {readInfo = fis.read();if (readInfo == -1) {break;}System.out.println(readInfo);}System.out.println("可以看到读取的内容是一些数组,不是文件中的字符串");}
}

2.效果

 4)案例:文件写入

1.代码
package org.xiji.javaio;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;public class FileOutPut {public static void main(String[] args) throws IOException {String containInfo = "这是我通过这些输入到文件中的内容";FileOutputStream myOutputStream = new FileOutputStream("D:\\myFirst\\myOutputStream.txt");try {//转化为数组并且写入myOutputStream.write(containInfo.getBytes());System.out.println("写入完成");} catch (Exception e) {e.printStackTrace();}finally {myOutputStream.close();}}
}

2.效果

5)案例:文件的复制

1.代码
package org.xiji.javaio;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class MyCopy {public static void main(String[] args) throws IOException {System.out.println("文件的复制");//文件读取流FileInputStream fileInputStream = new FileInputStream("D:\\myFirst\\myTxt.txt");//文件输出流FileOutputStream fileOutput = new FileOutputStream("D:\\myFirst\\myTxtCopy.txt");//缓冲变量int len = 0;//定义每次读取长度1024byte[] bytes = new byte[1024];while ( (len =fileInputStream.read(bytes)) !=  -1 ) {//文件读取fileOutput.write(bytes,0,len);}fileInputStream.close();System.out.println("复制完成");}
}

2.效果

 

3.字符流

字符流用于读写字符文本。它们以Unicode编码形式处理数据。Java中的字符流主要基于ReaderWriter抽象类。

  • Reader

  • 这是所有字符输入流的超类。

    • 1)int read()

    • 读取单个字符。
    • 2)int read(char[] cbuf)

    • 尝试读取多个字符并将它们存放到数组cbuf中。
    • 3)void close()

    • 关闭流。
  • Writer

  • 这是所有字符输出流的超类。

    • 1)void write(int c)

    • 写入单个字符。
    • 2)void write(char[] cbuf)

    • 写入一个字符数组。
    • 3)void write(String str)

    • 写入一个字符串。
    • 4)void flush()

    • 刷新流。
    • 5)void close()

    • 关闭流。

具体实现类如FileReaderFileWriter等提供了文件相关的读写功能。

6)案例:字符流的读取

1.代码

package org.xiji.javaio;import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;public class MyReaderFile {public static void main(String[] args) throws IOException {//文件字符读取流FileReader fr = new FileReader("D:\\myFirst\\myTxt.txt");int read = 0;//文件读取while (true) {read = fr.read();if (read == -1) {break;}System.out.println((char) read);}}
}

2.效果

可以看到每次读取的都是一个字符,而不是像FileInputStream读取的一样是乱码        

 7)案例:简易记事本

1.代码
package org.xiji.javaio;import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;public class MyNotePad {public static void main(String[] args) throws IOException {// 文件路径String path = "D:\\myFirst\\";Scanner sc = new Scanner(System.in);while (true) {System.out.println("输入1继续添加内容");System.out.println("输入2退出");if (sc.nextInt() == 2) {break;}System.out.println("输入记事本名字:");String myTxtName = sc.next();FileWriter fw = new FileWriter(path+myTxtName+".txt");//文件内容System.out.println("输入记事本内容:");String myContain = sc.next();fw.write(myContain);fw.close();}}
}

2.效果

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

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

相关文章

计算机网络——ftp

在网络通信中,控制连接和数据连接是两种不同类型的连接,它们各自具有特定的功能和用途。 一、控制连接 定义与功能: 控制连接主要用于在通信双方之间传输控制信息,以建立、维护和终止数据连接。它负责协调和管理数据传输的过程&am…

Leetcode - 周赛418

目录 一,3309. 连接二进制表示可形成的最大数值 二,3310. 移除可疑的方法 三,3311. 构造符合图结构的二维矩阵 四,3312. 查询排序后的最大公约数 一,3309. 连接二进制表示可形成的最大数值 本题数据范围较小&#…

chatGPT模型接口分享

前言: 仅供学习和交流,请合理使用。 API:https://api.gptnet.org key:sk-x9Rmq3HeHh5z9EIi8wFaXCl02OfxRSk5UAFodYm1o4zo5X3i 支持模型:gpt-3.5-turbo、gpt-3.5-turbo-16k、gpt-4o-mini、llama-3.1-405b 暂时支持以上四个模型…

Java基础-基础知识体系小结 Q/A

文章目录 知识体系Q&AJava 中应该使用什么数据类型来代表价格?怎么将 byte 转换为 String?Java 中怎样将 bytes 转换为 long 类型?存在两个类,B 继承 A,C 继承 B,我们能将 B 转换为 C 么? 如 C (C) B;Java 中 操作符是线…

Java初阶~~四种内部类总结

文章目录 1.内部类的分类2.局部内部类2.1.基本语法2.2就近原则的理解 3.匿名内部类3.1基于接口的匿名内部类3.2基于普通类的匿名内部类3.3基于抽象类的匿名内部类3.4匿名内部类的细节3.5匿名内部类实践3.5.1作为实参进行传递3.5.2实践案例 4.成员内部类4.1基本介绍4.2外部类&am…

5本一投就中的极速期刊,性价比高,1周-1个月录用,见刊极快!

在当今快节奏的学术界,研究者们不仅追求高质量的研究成果,还希望能够迅速地将这些成果分享给全球的同行。为此,科检易学术精心挑选了10本以高效审稿流程著称的期刊,这些期刊不仅性价比高,而且从投稿到录用的时间极短&a…

ARM base instruction -- asr

算术右移,结果带符号。 Arithmetic Shift Right (immediate) shifts a register value right by an immediate number of bits, shifting in copies of the sign bit in the upper bits and zeros in the lower bits, and writes the result to the destination reg…

SD NAND Flash 小容量存储解决方案及其STM32测试例程讲解

文章目录 前言一、Flash闪存是什么?二、SD NAND Flash三、STM32测试例程四、总结 前言 随着移动存储技术的快速发展和便携式数字设备的广泛应用,Flash闪存作为非易失性存储解决方案,在各种电子设备中扮演着越来越重要的角色。本文提供关于Fl…

【含开题报告+文档+PPT+源码】基于SpringBoot乡村助农益农平台的设计与实现

开题报告 近年来,随着社会经济的快速发展和人民生活水平的提高,人们对优质农产品的需求越来越高。然而,传统的农产品销售管理模式存在一些问题。首先,农产品供应链信息不透明,导致生产者难以了解市场需求和价格变动趋…

iMazing只能苹果电脑吗 Win和Mac上的iMazing功能有区别吗

在当今数字时代,管理和备份手机数据变得越来越重要。无论是转移照片、备份短信,还是管理应用程序,一个强大的工具可以大大简化这些操作。iMazing作为一款备受好评的iOS设备管理软件,已经成为许多用户的选择。但是,许多…

Anaconda创建环境

目录 前言 第一步:更改环境创建位置 第二步:安装环境 前言 在我们创建多个项目的时候,有时会安装的库版本冲突,所以最好是一个项目一个环境 第一步:更改环境创建位置 新安装Anaconda后,在创建环境时环…

Web安全 - 路径穿越(Path Traversal)

文章目录 OWASP 2023 TOP 10导图定义路径穿越的原理常见攻击目标防御措施输入验证和清理避免直接拼接用户输入最小化权限日志监控 ExampleCode漏洞代码:路径穿越攻击案例漏洞说明修复后的安全代码代码分析 其他不同文件系统下的路径穿越特性Windows系统类Unix系统&a…

ctfshow-web 萌新题

给她 spring漏洞 pyload: 1.dirsearch扫描&#xff0c;发现git 2. GitHack工具得到.git文件 <?php $passsprintf("and pass%s",addslashes($_GET[pass])); $sqlsprintf("select * from user where name%s $pass",addslashes($_GET[name])); ?>…

交换排序:冒泡排序、递归实现快速排序

目录 冒泡排序 1.冒泡排序的核心思想 2.冒泡排序的思路步骤 3.冒泡排序代码 4.代码分析 5.对冒泡排序的时间复杂度是O(N^2)进行解析 6.冒泡排序的特性总结 递归实现快速排序(二路划分版本) 1.快速排序基本思路 2.代码思路步骤 3.代码实现 4.代码分析 (1)递归终止条…

介绍几个电池充电管理芯片(TP4056、SGM40561)

TP4056 上一篇我们介绍了个TP4055&#xff0c;那么跟TP4055相比&#xff0c;TP4056肯定是做了升级的。 首先是有最高1000mA的充电电流&#xff0c;而TP4055是500mA。 一般来说我们尽可能的让充电电流接近电池容量的一半&#xff0c;这样对电池比较好。 充电电压都是4.2V。 …

vite学习教程06、vite.config.js配置

前言 博主介绍&#xff1a;✌目前全网粉丝3W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质作者、专注于Java后端技术领域。 涵盖技术内容&#xff1a;Java后端、大数据、算法、分布式微服务、中间件、前端、运维等。 博主所有博客文件…

五款专业三维数据处理工具:GISBox、Cesiumlab、OSGBLab、灵易智模、倾斜伴侣深度解析

随着三维数据处理技术的广泛应用&#xff0c;尤其是在城市规划、地理信息系统&#xff08;GIS&#xff09;、工程监测等领域&#xff0c;处理倾斜摄影、三维建模以及大规模数据管理的需求日益增加。以下是五款我精心挑选的倾斜摄影和三维数据处理工具——GISBox、Cesiumlab、OS…

Vue3入门学习

Vue3入门学习 1. Vue3简介1.1. 【性能的提升】1.2.【 源码的升级】1.3. 【拥抱TypeScript】1.4. 【新的特性】 2. 创建Vue3工程2.1. 【基于 vue-cli 创建】2.2. 【基于 vite 创建】(推荐)2.3. 【一个简单的效果】 3. Vue3核心语法3.1. 【OptionsAPI 与 CompositionAPI】Options…

YOLO11改进|注意力机制篇|引入NAM注意力机制

目录 一、【NAM】注意力机制1.1【NAM】注意力介绍1.2【NAM】核心代码 二、添加【NAM】注意力机制2.1STEP12.2STEP22.3STEP32.4STEP4 三、yaml文件与运行3.1yaml文件3.2运行成功截图 一、【NAM】注意力机制 1.1【NAM】注意力介绍 下图是【NAM】的结构图&#xff0c;让我们简单分…

C++ day04(友元 friend、运算符重载、String字符串)

目录 【1】友元 friend 1》概念 2》友元函数 3》友元类 4》友元成员函数 【2】运算符重载 1》概念 2》友元函数运算符重载 ​编辑 3》成员函数运算符重载 4》赋值运算符与类型转换运算符重载 5》注意事项 【3】String 字符串类 【1】友元 friend 1》概念 定义&#x…