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)案例:简易记事本

        可以输入名字,输入内容,然后保存,可以退出,很简单,通过FileWriter类实现的,也可以通过FileOutputStream,只不过需要对输入的内容转换为二进制.

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.xdnf.cn/news/1559895.html

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

相关文章

SiLM266x系列SiLM2661高压电池组前端充/放电高边NFET驱动器 为电池系统保护提供可靠性和设计灵活性

SiLM2661产品概述: SiLM2661能够灵活的应对不同应用场景对锂电池进行监控和保护的需求,为电池系统保护提供可靠性和设计灵活性。是用于电池充电/放电系统控制的低功耗、高边 N 沟道 FET 驱动器,高边保护功能可避免系统的接地引脚断开连接&am…

Linux云计算 |【第四阶段】RDBMS2-DAY2

主要内容: 数据读写分离概述、Maxscale实现数据读写分离、多实例配置、中间件概述 一、数据读写分离概述 数据读写分离(Read/Write Splitting)是一种数据库架构设计模式,旨在提高数据库系统的性能、可扩展性和可用性。通过将读操…

how to increase the height of the ps or cdm window

when the line reaches the bottom; directly pull up the top bar of the window after pulling down the bar

Llama-3.2-3B-Instruct PyTorch模型微调最佳实践

1 引言 Meta Llama 3.2多语言大型语言模型集合(LM)是一个1B和3B大小(文本输入/文本输出)的预训练和指令微调模型集合。Llama 3.2指令调整的纯文本模型针对多语言对话用例进行了优化,包括智能检索和总结任务。它们在常…

Vue组件继承与扩展

Vue组件继承与扩展 前言 与Class继承类似,在Vue中可以通过组件继承来达到复用和扩展基础组件的目的,虽然它可能会带来一些额外的性能损耗和维护成本,但其在解决一些非常规问题时有奇效。本文将通过一些非常规的功能需求来讨论其实现过程。 …

锐明Crocus系统 RepairRecord.do SQL注入漏洞

0x01 产品描述: 明锐技术是一家专注于AI和视频技术的商用车智能物联(AIoT)解决方案提供商,Crocus系统是其核心产品之一。该系统旨在利用人工智能、高清视频、大数据和自动驾驶技术,提高企业或车队的运营效率&#xff0…

python31_format方法的使用

format方法的使用 def str_format(c, d):"""格式化字符串函数本函数的目的是通过给定的参数c和d,去填充一个预设的字符串模板。模板中包含了{name1}和{name2}两个占位符,分别用参数c和d的值来替换。这个过程演示了Python中字符串格式化的…

AR虚拟试用,让网购不再只靠想象!

在数字化浪潮席卷全球的今天,电子商务已成为我们日常生活中不可或缺的一部分。然而,传统的网购体验往往受限于二维图片和文字描述,消费者在购买前只能依靠想象来构建商品的模样与适用性,这无疑增加了购物的不确定性和风险。幸运的…

基于卷积神经网络的脊柱骨折识别系统,resnet50,mobilenet模型【pytorch框架+python】

更多目标检测和图像分类识别项目可看我主页其他文章 功能演示: 基于卷积神经网络的脊柱骨折识别系统,resnet50,mobilenet【pytorch框架,python,tkinter】_哔哩哔哩_bilibili (一)简介 基于卷…

Java面试宝典-Java集合02

目录 Java面试宝典-Java集合02 21、TreeMap 和 TreeSet 在排序时如何比较元素? 22、ArrayList 和 LinkedList 的区别是什么? 23、ArrayList 和 Vector 的区别? 24、队列和栈是什么?有什么区别? 25、Queue和Deque的区别…

版本控制系统Helix Core的常见使用误区及解决办法、实用工具及新功能介绍

日前,Perforce携手合作伙伴龙智一同亮相Unreal Fest 2024上海站,分享Helix Core版本控制系统及其协作套件的强大功能与最新动态,助力游戏创意产业加速前行。 Perforce解决方案工程师Kory Luo在活动主会场,带来《Perforce Helix C…

谈谈英国硕士毕业论文如何收集问卷数据

在之前几期文章中,英国翰思教育小编介绍了在写英国硕士毕业论文的时候如何设计问卷,以及设计问卷时需要注意的一些原则和细节。希望通过那些往期内容,可以帮助同学们正确认识毕业论文问卷设计,也可以帮助大家找到合适的问卷设计思…

vantUI用popup和picker和field做关键词搜索功能

<van-field class"mainFileCss" v-model"currentflowmeterLocation" left-icon"search" click"openPicker" center label"位号"placeholder"请输入位号"><template slot"button"></temp…

Linux查看下nginx及使用的配置文件

1、查到nginx进程 ps -aef | grep nginx2、通过进行pid查到nginx路径 pwdx <pid>3、根据路径得到配置文件 path***/nginx -t如下&#xff1a;

基于xml配置文件的Spring事务

在项目中对事务属性通常传播属性&#xff0c;回滚属性&#xff0c;隔离级别&#xff0c;超时属性都取默认值&#xff0c;只有只读属性会如下的配置&#xff1a; 什么意思&#xff1a;Service层你的类里的方法&#xff0c;以get&#xff0c;find&#xff0c;select等开头的方法是…

shell注意点

变量命名&#xff1a; 注意&#xff0c;变量名和等号之间不能有空格&#xff0c;定义变量时&#xff0c;变量名不加美元符号$&#xff0c;这可能和你熟悉的所有编程语言都不一样。同时&#xff0c;变量名的命名须遵循如下规则&#xff1a; 只包含字母、数字和下划线&#xff…

【text2sql】ReFSQL检索生成框架

论文标题为《ReFSQL: A Retrieval-Augmentation Framework for Text-to-SQL Generation》&#xff0c;发表在 EMNLP 2023 上。ReFSQL框架通过结构增强检索器来获取与当前问题语义和模式结构相似的样本&#xff0c;然后通过对比学习机制来引导模型学习到这些样本的特定知识&…

10款超实用的Sketch插件合集,别错过!

在 UI 界面设计领域&#xff0c;Sketch 以其高效、轻便的优势获得了不少设计团队的青睐&#xff0c;帮助全球设计师创造了许多妙不可言的作品。在使用 Sketch 的过程中&#xff0c;使用一些 辅助用的 Sketch 插件&#xff0c;可以让我们更加高效地完成设计任务。本文将将揭秘大…

jenkins中的allure和email问题梳理

一、allure相关 1、我安装了jenkins之后需要再安装allure吗&#xff1f;在jenkins插件中心直接安装allure 1.Allure Jenkins Plugin 只是一个集成插件&#xff0c;它要求你在 Jenkins 服务器上安装 Allure 命令行工具&#xff08;Allure Commandline&#xff09;来实际生成报…

Spring Boot教学资源库:从入门到精通

1绪 论 1.1研究背景 目前&#xff0c;在网络大环境下&#xff0c;越来越多高校开始实行网络教学&#xff0c;利用网络教学方式有利于学生更好的学习。 网络教学是指以计算机及网络为基础&#xff0c;来实现教学资源的上传、存储、传播和共享的教学手段。它是一种教学活动&#…