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

news2024/11/15 13:39:46

        在变量、数组和对象中存储的数据是暂时存在的,程序结束后它们就会丢失。想要永久地存储程序创建的数据,就需要将其保存在磁盘文件中(就是保存在电脑的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.coloradmin.cn/o/964072.html

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

相关文章

STS4 New 安装Spring Bean Configuration File

背景介绍 在创建spring项目后,如果想想创建spring bean Configuration的时候,发下菜单没有这个选项,需要通过下载Spring Roo插件可满足该操作。 参考案例 参考地址: STS4 New 菜单没有Spring Bean Configuration File选项_SQZHA…

02-Windows Server搭建AD服务

1、安装AD 等待安装 2、配置 等待安装(10分钟)完后自动重启 3、安装成功

javaee之黑马乐优商城2

简单分析一下商品分类表的结构 先来说一下分类表与品牌表之间的关系 再来说一下分类表和品牌表与商品表之间的关系 面我们要开始就要创建sql语句了嘛,这里我们分析一下字段 用到的数据库是heima->tb_category这个表 现在去数据库里面创建好这张表 下面我们再去编…

批量文件重命名,轻松在文件夹中插入相同文字符号!

你是否曾经需要批量修改文件夹中的文件名,或者需要在文件名中插入特定的文字符号?现在,我们为你提供了一种快速、简单的方法,让你轻松实现这一需求! 首先第一步,我们要打开文件批量重命名高手,…

微信小程序 选择学期控件 自定义datePicker组件 不复杂

我的时间选择组件在common文件夹里 datePicker组件代码 html: <view class"date_bg_view"> </view> <view class"date_content"><view class"date_title"><image src"/image/icon_close_black.png" clas…

SKU助手

属性SKU助手可以帮你快速选中目标商品属性 下载安装与运行 下载、安装与运行 语雀 如何使用 下面以1688批量自动下单为例&#xff0c;演示用法&#xff0c;同样适用于淘宝天猫拼多多批量自动下单 功能说明 SKU助手弹出的时机 同时满足如下两个条件 Excel提供的SKU与真实…

知识储备--基础算法篇-数组

1.学习 2.数组 2.1第53题-最大子数组和 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组 是数组中的一个连续部分。 心得&#xff1a;一直在纠结这个连续的事情&…

YOLOv5算法改进(13)— 替换主干网络之PP-LCNet

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。PP-LCNet是一个由百度团队针对Intel-CPU端加速而设计的轻量高性能网络。它是一种基于MKLDNN加速策略的轻量级卷积神经网络&#xff0c;适用于多任务&#xff0c;并具有提高模型准确率的方法。与之前预测速度相近的模型相比…

你真的懂分数吗?(二)——分数模型应用初探

早点关注我&#xff0c;精彩不错过&#xff01; 上回我们聊到了分数的数学结构和数学建模&#xff0c;构成了分数的基本数学模型。相关内容请戳&#xff1a; 你真的懂分数吗&#xff1f;&#xff08;一&#xff09;——分数的数学结构和建模 但是&#xff0c;这样的分数是定义在…

基于单片机的点阵电子显示屏上下左右移加减速系统

一、系统方案 本设计的任务就是完成一个1616的点阵设计&#xff0c;并能滚动显示“********************”内容。 主要内容是&#xff0c;能同时流动显示汉字&#xff1b;能实现显示汉字无闪烁&#xff1b;能实屏幕亮度较高。本LED显示屏能够以动态扫描的方式显示一个1616点阵汉…

性能可靠it监控系统,性能监控软件的获得来源有哪些

性能可靠的IT监控系统是企业IT运维的重要保障之一。以下是一个性能可靠的IT监控系统应该具备的特点&#xff1a; 高可用性 高可用性是IT监控系统的一个重要特点&#xff0c;它可以保证系统在24小时不间断监控的同时&#xff0c;保证系统服务的可用性和稳定性。为了实现高可用性…

TiDB x 安能物流丨打造一栈式物流数据平台

作者&#xff1a;李家林 安能物流数据库团队负责人 本文以安能物流作为案例&#xff0c;探讨了在数字化转型中&#xff0c;企业如何利用 TiDB 分布式数据库来应对复杂的业务需求和挑战。 安能物流作为中国领先的综合型物流集团&#xff0c;需要应对大规模的业务流程&#xff…

linux中dmesg命令用法

在Linux系统中&#xff0c;dmesg&#xff08;diagnostic message&#xff09;是一个非常有用的命令行工具&#xff0c;用于显示和控制内核环形缓冲区中的消息。这些消息通常包含系统启动时的内核生成的信息&#xff0c;例如硬件设备的状态&#xff0c;驱动程序的加载&#xff0…

【Python基础教程】快速找到多个字典中的公共键(key)的方法

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 方法一&#xff1a;for in循环 from random import randint, samplea1 {k: randint(1, 4) for k in abcdefg} a2 {k: randint(1, 4) for k in abc123456…

Qt应用开发(基础篇)——输入对话框 QInputDialog

一、前言 QInputDialog类继承于QDialog&#xff0c;是一个简单方便的对话框&#xff0c;用于从用户获取单个值。 对话框窗口 QDialog QInputDialog输入对话框带有一个文本标签、一个输入框和标准按钮。输入内容可以字符、数字和选项&#xff0c;文本标签用来告诉用户应该要输入…

一文看遍半监督学习模型(Semi-Supervised Learning)

一、半监督学习的总体框架 二、一致性正则化模型 该算法旨在&#xff1a;一个模型对于同一个未标记图像&#xff0c;在图像添加额外噪声前后的预测值应该保持一致。 添加噪声的方法&#xff0c;如图像增强&#xff08;空间维度增强、像素维度增强&#xff09;。 同样&#x…

线性DP问题

目录 数字三角形DP 动态规划 [自上向下二维数组]DP 动态规划 [自上向下一维数组]DP 动态规划 [自下而上二维数组]DP 动态规划 [自下而上一维数组]记忆化搜索 DFS 最长上升子序列一维状态数组实现扩展&#xff1a;最长序列输出 最长上升子序列 II贪心二分优化算法思路代码实现扩…

2023蓝帽杯初赛

比赛总结就是首先审题要仔细&#xff0c;确定题目意思再去找才不会找错。 内存取证vol工具的使用不够熟练 然后容易走进死胡同&#xff0c;如果一个软件不能得到答案可以换一个看看&#xff0c;说不定就有答案了。 还有服务器取证很生疏&#xff0c;还是要多花时间做点题 取…

黑客之批处理编写

文章目录 一、批处理作用二、如何创建批处理三、批处理语法 一、批处理作用 自上而下成批的处理每一条命令&#xff0c;直到执行最后一条。这里的命令指的是DOS命令&#xff0c;在之前的【黑客常用DOS命令】博客中&#xff0c;我介绍了大量的常用DOS命令。不过我们之前输入命令…

Lesson3-5:OpenCV图像处理---模版匹配和霍夫变换

学习目标 掌握模板匹配的原理&#xff0c;能完成模板匹配的应用理解霍夫线变换的原理&#xff0c;了解霍夫圆检测知道使用OpenCV如何进行线和圆的检测 1 模板匹配 1.1 原理 所谓的模板匹配&#xff0c;就是在给定的图片中查找和模板最相似的区域&#xff0c;该算法的输入包括…