Java学习笔记之----I/O(输入/输出)一

        在变量、数组和对象中存储的数据是暂时存在的,程序结束后它们就会丢失。想要永久地存储程序创建的数据,就需要将其保存在磁盘文件中(就是保存在电脑的C盘或D盘中),而只有数据存储起来才可以在其他程序中使用它们。Java的I/O技术可以将数据保存到文本文件、二进制文件甚至是ZIP压缩文件中,以达到永久性保存数据的要求。

目录

一   输入/输出流

 二 File类

1.文件的创建与删除 

第一种构造方法

第二种构造方法

第三种构造方法

2.File类的使用

(1)获取文件信息

(2)文件夹的操作

1.创建单层文件夹

2.创建多层文件夹

3.删除文件夹 

​编辑4. 获取文件夹下的所有子文件


 

一   输入/输出流

😶‍🌫️😶‍🌫️😶‍🌫️流是一组有序的数据序列,根据操作的类型,可分为输入流和输出流两种。I/O(Input/Output,输入/输出)流提供了一条通道程序,可以使用这条通道把源中的字节序列送到目的地。虽然IO流通常与磁盘文件存取有关,但是程序的源和目的地也可以是键盘、鼠标、内存或显示器窗口等。
Java有数据流处理输入/输出模式,程序从指向源的输入流中读取源中的数据,如图所示。源可以是文件、网络、压缩包或其他数据源。

 Java语言定义了许多类专门负责各种方式的输入/输出,这些类都被放在java.io包中。其中,所有
输入流类都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类;而所有输出
流都是抽象类OutputStream(字节输出流)或抽象类Writer(字符输出流)的子类。

 二 File类

File 类是java.io包中唯一代表磁盘文件本身的类。File类定义了一些与平台无关的方法来操作文件,可以通过调用File类中的方法,实现创建、删除、重命名文件等操作。File类的对象主要用来获取文件本身的一些信息,如文件所在的目录、文件的长度、文件读写权限等。数据流可以将数据写入文件中,文件也是数据流最常用的数据媒体。

1.文件的创建与删除 

第一种构造方法

:File(String pathname)

该构造方法通过将给定的路径名字符串转换为抽象路径名来创建一个新File实列。

file创建中的抽象路径的三种表示方法 ,如图1,2,3;

图一:  在MyProject下创建一个word.txt。此时word.txt不在src的包里面。

图二: word.txt与Dome在同一个包中 

图三: 

那么我们来看一下决定路径下如何创建文件:

 1.首先,我们在c盘里面创建一个文件夹,名字为text;

2.然后 ,在text文件夹中创建一个文本,文本名为word.txt;

3.查看绝对路径,这里我们可以右键看属性,也可以直接双击上面的标题;

第二种构造方法

:File(String parent,String chid)

该构造方法根据定义的父路径和子路径字符串(包含文件名)创建一个新的File对象。语法如下:

new File(String parent,String child)

▢parent:父路径字符串,如D:/或D:/doc。

也就是说他它所在的位置信息。
▢child:子路径字符串,如letter.txt。

文档,项目的名字。

第三种构造方法

:File(File f, String child)

该构造方法根据f抽象路径名和child路径名字符串创建一个新File实例。语法如下:

new File(File f,String child)

▢f:父路径对象,如D:/doc/。
▢child:子路径字符串,如letter.txt。

 【源码】

package my;import java.io.File;public class Demo {public static void main(String[] args) {/** 项目下的路径(默认路径):word.txt* 包中的文件路径:src/my/word.txt* 注意: 可以用/表示文件夹*       可以用\\表示文件夹(转义字符)* 绝对路径:C:\\text\\word.txt*/     File f1 = new File("C:\\text\\word.txt");//第一种构造方法File f2 = new File("C:\\text\\","word.txt");//第二种构造方法/** parent:C:\\text\\(文件在c盘的文件夹text中)* child:word.txt(它的文档名字是word.txt)*/File dir = new File("C:\\text\\");//文件夹File f3 = new File(dir,"word.txt");//第三种构造方法/** 也可以用下面的式子表示* File f3 = new File(new File("C:\\text\\"),"word.txt");*/System.out.println(f1.getAbsolutePath());System.out.println(f2.getAbsolutePath());System.out.println(f3.getAbsolutePath());System.out.println(f1==f2);/** f1和f2不相等是因为它们是通过不同的构造方法创建的对象。* 尽管它们的路径和文件名都相同,但它们是两个不同的对象。* 比较两个对象时,需要使用.equals()方法而不是==运算符。* 所以应该使用f1.equals(f2)来比较它们是否相等。* 他们只是一个代表,好比a与b是朋友,c也与b是朋友,而a与c并不一定是朋友。*/System.out.println(f1.equals(f2));}
}

2.File类的使用

(1)获取文件信息

File类提供了很多方法用来获取文件本身信息。如表:

【代码】 

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;public class Demo {public static void main(String[] args) {File f1 = new File("C:\\text\\word.txt");System.out.println("文件是否存在:"+f1.exists());System.out.println("文件名:"+f1.getName());System.out.println("文件的绝对路径:"+f1.getAbsolutePath());System.out.println("文件是否隐藏:"+f1.isHidden());System.out.println("文件大小:"+f1.length());Date date = new Date(f1.lastModified());SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");System.out.println("文件最后的修改时间:"+sdf.format(date));boolean f = f1.delete();System.out.println("文件是否删除成功:"+f);try {boolean fl = f1.createNewFile();System.out.println("创建文件是否成功:"+fl);} catch (IOException e) {// TODO 自动生成的 catch 块e.printStackTrace();}}}

【运行结果】 

 运行完后我们会发现word文件大小变为0了,这是因为我们删除了,又重新创建的原因。

(2)文件夹的操作

1.创建单层文件夹

创建单层文件夹用mkdir()或mkdirs()方法。

package mt;import java.io.File;public class Demo {public static void main(String[] args) {File dir = new File("dir");boolean flag = dir.mkdir();//创建文件夹System.out.println("创建文件夹是否成功:"+flag);}}

创建前我们可以看到左侧没有dir文件: 

运行刷新后:

我们可以发现左侧出现了dir文件夹的图标。 

2.创建多层文件夹

创建多层文件夹我们要用mkdirs()方法;

【代码】 

package mt;import java.io.File;public class Demo {public static void main(String[] args) {File dir = new File("dir/dir2/dir3/dir4/");boolean flag = dir.mkdir();//创建文件夹boolean flag2 = dir.mkdirs();//创建文件夹及其父文件夹System.out.println("创建文件夹是否成功:"+flag);System.out.println("创建多层文件夹是否成功:"+flag2);}}

【运行结果】 

3.删除文件夹 

删除文件夹用delete()方法,默认删除最后一个文件夹。

【代码】 

package mt;import java.io.File;public class Demo {public static void main(String[] args) {File dir = new File("dir/dir2/dir3/dir4/");boolean flag = dir.mkdir();//创建文件夹boolean flag2 = dir.mkdirs();//创建文件夹及其父文件夹System.out.println("创建文件夹是否成功:"+flag);System.out.println("创建多层文件夹是否成功:"+flag2);boolean de1 = dir.delete();System.out.println("删除文件夹是否成功:"+de1);}}

【运行结果】 

4. 获取文件夹下的所有子文件

 【代码】

package mt;import java.io.File;public class Demo {public static void main(String[] args) {File f = new File("C:\\windows\\");File files[] = f.listFiles();for(File tmp:files) {if(tmp.isFile()) {System.out.println("文件:"+tmp.getName());}else if(tmp.isDirectory()){System.out.println("文件夹:"+tmp.getName());}}}}

【运行结果】 

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

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

相关文章

机器学习:可解释学习

文章目录 可解释学习为什么需要可解释机器学习可解释还是强模型可解释学习的目标可解释机器学习Local ExplanationGlobal Explanation 可解释学习 神马汉斯,只有在有人看的时候能够答对。 为什么需要可解释机器学习 贷款,医疗需要给出理由,让…

MongoDB 会丢数据吗? 在次补刀MongoDB 双机热备

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis ,Oracle ,Oceanbase 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请加微信号 liuaustin3 (…

makefile开发应用程序的一个通用模板

下面是一个通用的 Makefile 模板,用于开发 C 语言应用程序: # 编译器设置 CC gcc CFLAGS -Wall -Wextra -stdc99# 可执行文件名 TARGET your_program# 源文件和对象文件 SRCS main.c file1.c file2.c OBJS $(SRCS:.c.o)# 默认目标 all: $(TARGET)#…

【C++】异常处理详解

本篇文章重点将会对C中的异常的相关处理操作进行详解。希望本篇文章的内容会对你有所帮助。 目录 一、C语言的异常处理 二、C异常 2、1 异常概念 2、2 异常的使用 2、3 异常类 2、4 异常的重新抛出 三、异常的安全与规范 3、1 异常的安全 3、2 异常的规范 四、异常的优缺点 &am…

CVE-2023-25157:GeoServer OGC Filter SQL注入漏洞复现

CVE-2023-25157:GeoServer OGC Filter SQL注入漏洞复现 前言 本次测试仅供学习使用,如若非法他用,与本文作者无关,需自行负责!!! 一.GeoServer简介 GeoServer 是用 Java 编写的开源软件服务…

界面控件Telerik UI for WPF——Windows 11主题精简模式提升应用体验

Telerik UI for WPF拥有超过100个控件来创建美观、高性能的桌面应用程序,同时还能快速构建企业级办公WPF应用程序。Telerik UI for WPF支持MVVM、触摸等,创建的应用程序可靠且结构良好,非常容易维护,其直观的API将无缝地集成Visua…

【力扣】416. 分割等和子集 <动态规划、回溯>

【力扣】416. 分割等和子集 给你一个 只包含正整数的非空数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums [1,5,11,5] 输出:true 解释:数组可以分割成 [1, 5,…

供热管网安全运行监测,提升供热管网安全性能

城市管网是城市的“生命线”之一,是城市赖以生存和发展的基础,在城市基础设施高质量发展中发挥着重要作用。供热管网作为城市生命线中连接供热管线与热用户的桥梁,担负着向企业和居民用户直接供热的重要职责。随着城市热力需求的急剧增加&…

组相联cache如何快速实现cache line eviction并使用PMU events验证

如何快速实现cache line eviction 一,什么是cache hit、miss、linefill、evict ?1.1 如果要程序员分别制造出cache hit、miss、linefill、evict这四种场景,该怎么做? 二,实现cache line eviction的方法1.1 直接填充法3…

Android——基本控件(下)(二十)

1. 树型组件:ExpandableListView 1.1 知识点 (1)掌握树型组件的定义; (2)可以使用事件对树操作进行监听。 2. 具体内容 既然这个组件可以完成列表的功能,肯定就需要一个可以操作的数据&…

vue从零开始学习

npm install慢解决方法:删掉nodel_modules。 5.0.3:表示安装指定的5.0.3版本 ~5.0.3:表示安装5.0X中最新的版本 ^5.0.3: 表示安装5.x.x中最新的版本。 yarn的优点: 1.速度快,可以并行安装 2.安装版本统一 项目搭建: 安装nodejs查看node版本:node -v安装vue clie : np…

swaggo的一点小理解

如有错误,希望指出,谢谢! 很低级的概念不清,大佬嘴下留情。 1.关于swag的注释 我的理解是这些注释是专门提供给Swagger UI界面测试使用的,根据注释内容告诉swag文档这个函数应该有哪些参数,从什么路由走&…

HarmonyOS/OpenHarmony(Stage模型)应用开发单一手势(二)

三、拖动手势(PanGesture) .PanGestureOptions(value?:{ fingers?:number; direction?:PanDirection; distance?:number}) 拖动手势用于触发拖动手势事件,滑动达到最小滑动距离(默认值为5vp)时拖动手势识别成功&am…

关于已经安装了TorchCRF,导入时却提示“ModuleNotFoundError: No module named ‘torchcrf‘”的解决办法

应用python时,想导入torchcrf库 from torchcrf import CRF 但系统提示:ModuleNotFoundError: No module named torchcrf 在命令提示符里输入“pip list”检查已安装库,发现torchcrf已经安装 搞了半天,发现是大小写的问题&#x…

Locked勒索病毒:最新变种.locked袭击了您的计算机?

导言: 在今天的数字时代,勒索病毒已经不再是仅仅让数据变得不可访问的小威胁。 .locked 勒索病毒,作为其中的一种,以其高度复杂的加密算法和迅速变化的攻击手法而备受恶意分子喜爱。本文91数据恢复将带您深入了解 .locked 勒索病毒…

C语言练习8(巩固提升)

C语言练习8 编程题 前言 奋斗是曲折的,“为有牺牲多壮志,敢教日月换新天”,要奋斗就会有牺牲,我们要始终发扬大无畏精神和无私奉献精神。奋斗者是精神最为富足的人,也是最懂得幸福、最享受幸福的人。正如马克思所讲&am…

Scala入门,idea关联Scala

Scala 介绍 Scala是一种多规范的编程语言,它结合了面向对象编程(OOP)和函数式编程(FP)的特征,Scala的名字源于”Scalable language“,意为”可伸缩语言“。2003年开发的,并在JVM&a…

如何设计一个好的游戏剧情(Part 1:主题的设定)

提醒:此教程仅仅为作者的一些经验和感悟,非专业教程,若介意请前往网上搜集或者书本查阅相关资料! 前言:游戏为什么要有剧情——游戏剧情的重要性 游戏剧情的重要性难以低估。一个精彩的剧情可以让玩家感受到强烈的情感…

华为OD:敏感字段加密

题目描述: 给定一个由多个命令字组成的命令字符串: 1、字符串长度小于等于127字节,只包含大小写字母,数字,下划线和偶数个双引号; 2、命令字之间以一个或多个下划线_进行分割; 3、可以通过两个双引号”"来标识包含下划线…

抽象轻松c语言

目 c语言 c程序 c语言的核心在于语言,语言的作用是进行沟通,人与人之间的信息交换 人与人之间的信息交换是会有信息空白(A表达信息,B接受信息,B对信息的处理会与A所以表达的信息具有差距,这段差距称为信…