文件IOoooo

1.1 文件路径

文件路径分为两种:

1、绝对路径:以C:、D:等盘符开头的,就是我们所说的绝对路径,根据它可以直接找到文件的具体位置。

2、相对路径:需要先指定一个目录作为基准目录,从基准目录出发,看看按照什么样的路径寻找能找到指定文件,这就是相对路径;相对路径通常是以.(当前目录)或者..(当前目录的上级目录)开头的。

1.2 文件类型

常见的文件类型分为两种:

1、文本文件:文件中保存的内容都是字符串,保存的都是合法的内容,简单来说就是打开之后我们能看懂,不是乱码。

2、二进制文件:文件中保存的内容是二进制数据,不要求保存合法的内容,打开文件之后看到一堆乱码就是这种情况。

1.3 文件操作

在Java中,通常通过java.io.file来描述一个文件。

文件的构造方法通常为:File(String pathname)

对文件操作的方法通常有以下几种:

File file = new File("d://text.txt");//构造文件,参数为文件的路径
System.out.println(file.getParent());//返回该文件的父目录文件路径
System.out.println(file.getName());//返回该文件的纯文件名称
System.out.println(file.getPath());//返回该文件的路径
System.out.println(file.getAbsolutePath());//返回该文件的绝对路径
System.out.println(file.getCanonicalPath());//返回修饰过的绝对路径

 

File f = new File("d:/text.txt");
System.out.println(f.exists());//判断文件是否存在
System.out.println(f.isDirectory());//判断文件是否是一个目录
System.out.println(f.isFile());//判断文件是否为一个普通文件
System.out.println(f.createNewFile());//如果文件不存在,则创建一个新的文件
System.out.println(f.exists());
System.out.println(f.delete());//删除文件
System.out.println(f.exists());

1.4 文件内容的读写

对于文件内容的读写分为字节流和字符流两种类型,下面我们进行分别介绍。

1.4.1 字符流

1、reader(读文件)

2、writer(写文件)

File file = new File("d:/test.txt");
System.out.println(file.exists());
Writer writer = new FileWriter("d:/test.txt");//构造一个写文件对象
writer.write("我在学习文件io");//向文件中写内容
writer.close();//关闭文件
Reader reader = new FileReader("d:/test.txt");//构造一个读文件对象
while(true){//设置循环的目的是因为文件的内容很多,得读很多次,直到读完int a = reader.read();//read方法返回的是一个int类型的数据if(a == -1){//当数字的值为-1时,代表文件已经读完,直接结束循环break;}else{char c = (char)a;//将整型强制转换为字符型System.out.println(c);//输出字符}
}
reader.close();//关闭文件Reader reader1 = new FileReader("d:/test.txt");
char[] cbuf = new char[1024];//构造一个字符数组用来存储读出的内容
int n = reader1.read(cbuf);//设置参数,此时每次读都会读一个数组的大小,返回内容字符数
for (int i = 0;i < n;i++){System.out.print(cbuf[i]);//输出数组中的内容
}
reader1.close();//关闭文件

 

注意:一定要记得关闭文件,否则会使文件资源泄露,类似于内存资源泄露,时间长了可能会出现意想不到的错误!!!

1.4.2 字节流

1、InputStream(读文件)

2、OutputStream(写文件)

File file = new File("d:/test.txt");
System.out.println(file.exists());
InputStream inputStream = new FileInputStream("d:/test.txt");//构造输入字符流对象
while(true){//类似字符流读方法,不断循环读取数据int a = inputStream.read();if(a == -1){break;}else{char c = (char)a;System.out.println(c);}
}Scanner scanner = new Scanner(inputStream,"UTF-8")//读出特定格式的数据
while(scanner.hasNext()){String s = scanner.next();System.out.println(s);
}inputStream.close();

 

File file = new File("d:/test.txt");
OutputStream outputStream = new FileOutputStream("d:/test.txt");
outputStream.write('H');
outputStream.write('e');
outputStream.write('l');
outputStream.write('l');
outputStream.write('o');
outputStream.flush();//此处要对缓冲区进行刷新,将缓冲区中的数据立即写入到硬盘中
outputStream.close();

1.5 小工具demo

public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入要扫描的根目录");String rootDirpath = scanner.next();File file = new File(rootDirpath);if(!file.isDirectory()){System.out.println("您输入的目录不存在或者不是目录,退出");return;}System.out.println("请输入要找出的文件名中包含的字符");String token = scanner.next();scanDir(file,token);
}private static void scanDir(File file, String token) {File[] files = file.listFiles();if(files == null){return;}for(File f : files){System.out.println("当前扫描的文件" + f.getAbsolutePath());if(f.isFile()){checkDelete(f,token);}else{scanDir(f,token);}}
}private static void checkDelete(File f, String token) {if(!f.getName().contains(token)){return;}System.out.println("当前文件为" + f.getAbsolutePath() + "请确认是否要删除(y/n)");Scanner scanner = new Scanner(System.in);String choice = scanner.next();if(choice.equals("Y") || choice.equals("y")){f.delete();System.out.println("删除完毕");}else{System.out.println("取消删除");}

 

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

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

相关文章

音视频封装的总接

1、封装涉及的基本概念 2、音视频封装基础3、封装总结 4、PS/TS码流封装层次图

python调用天气接口并解析json数据

""" 使用python调用请求 使用pip install requests安装requests """ import jsonimport requestsresp requests.get(urlhttps://apis.tianapi.com/tianqi/index,params{key: 4a9ce7c2516a223ewe323dwe323ew323eq1, city: 101020100, type: 1} )…

使用mysqldump迁移MySQL数据

将Windows系统中MySQL数据导出到其他系统中MySQL数据库中 1.导出数据 进入MySQL安装目录的bin目录下&#xff0c;打开dos窗口执行以下命令 --single-transaction 参数表示不锁表 1.1 指定部分表导出 mysqldump -u用户名 -p密码 数据库名 表1 表2 表3 --single-transact…

Apifox的使用

1、了解Apifox的工具特点和使用方法 2、使用Apifox辅助生成接口文档&#xff0c;尝试使用Apifox进行其他前后端调试。 Apifox IDEA 插件快速上手 | Apifox 帮助文档 Apifox IDEA 插件来啦&#xff01;是真的超好用&#xff01;_哔哩哔哩_bilibili 21分钟学会Apifox_哔哩哔哩…

Matlab进阶绘图第59期—棒棒糖图

​棒棒糖图本质上是柱状图的一种变体。 棒棒糖图通过在每根柱子顶端添加圆点&#xff0c;以表示数据之间的相对位置。 此外&#xff0c;一般还会对每根棒棒糖按数值大小进行排序&#xff0c;从而更加方便阅读。 本文利用自制的Lollipop工具进行棒棒糖图的绘制&#xff0c;先…

专业编程显示器明基RD280U,赋能开发者共创科技新纪元

距离ChatGPT问世仅有17个月&#xff0c;OpenAI就推出了颠覆生产力的GPT-4o。这是整个智能时代的一次再进化&#xff0c;GPT-4o不但能实时处理文本、音频和图像&#xff0c;甚至能在232毫秒内实时响应音频输入&#xff0c;几乎与真人对话无异。 当人们惊叹于这项“充满人性”的…

进口自力式蒸汽减压阀-美国品牌

进口自力式蒸汽减压阀是一种用于蒸汽系统中&#xff0c;通过自身能量来调节和控制蒸汽压力的装置。以下是关于进口自力式蒸汽减压阀的详细回答&#xff1a; 定义与功能&#xff1a; 进口自力式蒸汽减压阀是一种无需外加能源&#xff0c;利用被调介质&#xff08;蒸汽&#xff…

代码随想录算法训练营第36期DAY57

DAY57 今天的好消息&#xff1a;能去华五。 1143最长公共子序列 Code: class Solution {public: int longestCommonSubsequence(string text1, string text2) { vector<vector<int>> dp(text1.size()1,vector<int>(text2.size()1,0)); f…

C++基于easyX的员工管理界面

代码&#xff1a; #include "workerManager.h" #include "manager.h" #include "worker.h" #include "technician.h" #include <iostream> #include <graphics.h> #include <windows.h> #include <conio.h>…

SpringCloud入门教程

一、SpringCloud介绍 1.概念 Spring cloud 是一系列框架的有序集合。它利用 spring boot 的开发便利性巧妙地简化了分布式系统基础设施的开发&#xff0c;如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等&#xff0c;都可以用 spring boot 的开发风格做到…

使用 Bing 的 Chat 初体验

前言 下载好 Edge 浏览器&#xff0c;并且通过 ModHeader 插件的设置才能访问外边的功能完善的 edge &#xff0c;但是想要进行 chat 需要通过申请才行&#xff0c;网上很多教程我就不赘述了。 正文 我的申请刚刚通过&#xff0c;但是使用 Chat 的效果一般&#xff0c;感觉很…

对抗攻击论文阅读—AAAI2022—CMUA-Watermark

文章目录 CMUA-Watermark: A Cross-Model Universal Adversarial Watermark for Combating Deepfakes背景1、什么是对抗攻击1.1 主动防御与被动防御 2、整体思路3、方法3.1 整体流程3.2 如何破坏单个面部修改模型 G G G论文中代码 3.3 对抗扰动融合3.4 基于TPE的自动步长调整 4…

台灯学生用哪个牌子最好?学生台灯十大名牌排行榜分享

近年来&#xff0c;我们注意到儿童近视的现象呈现出增多且趋于低龄化的趋势。这一变化&#xff0c;部分原因可以归咎于孩子们越来越多地使用电子产品&#xff0c;另一部分则与他们面临的学业压力增加有关。鉴于此&#xff0c;家长们在挑选儿童学习用品时变得格外谨慎&#xff0…

Qt系统相关

本文目录 1.Qt事件事件的处理标签事件鼠标事件滚轮事件按键事件定时器事件窗口事件事件派发器 2.Qt文件操作QFile的基本使用 3.Qt多线程使用线程线程锁connect的第五个参数 条件变量和信号量 4.Qt网络编程UDP SocketTCP SocketQTcpServerQTcpSocket HTTP的编写 5.QT多媒体播放音…

【CTF MISC】XCTF GFSJ0766 something_in_image Writeup(字符串搜索)

something_in_image 暂无 解法 用 binwalk 扫描。 binwalk badimages 找到一个 ext3 文件系统。 strings badimages | grep {*}找到 flag。 Flag Flag{yc4pl0fvjs2k1t7T}声明 本博客上发布的所有关于网络攻防技术的文章&#xff0c;仅用于教育和研究目的。所有涉及到的实验…

收音机的原理笔记

1. 收音机原理 有线广播&#xff1a;我们听到的声音是通过空气振动进行传播&#xff0c;因此可以通过麦克风&#xff08;话筒&#xff09;将这种机械振动转换为电信号&#xff0c;传到远处&#xff0c;再重新通过扬声器&#xff08;喇叭&#xff09;转换为机械振动&#xff0c…

打造精细化运维新玩法(四)

二、SLO健康度——从0到1构建SLO 和大多互联网企业一样&#xff0c;蚂蚁的基础设施侧存在众多的异构系统&#xff0c;被上层的业务应用和服务所依赖。考虑到不同系统的技术栈、架构、部署等因素&#xff0c;我们需要找到一种通用的、泛化性强的数字化方案指导和构建基础设施域内…

智能楼宇可视化:赋能智慧园区管理

图扑智慧园区楼宇可视化系统&#xff0c;集成多种数据源&#xff0c;实现全方位监控与管理&#xff0c;提升园区的资源利用率和用户满意度&#xff0c;推动智能化管理进程。

电线电缆单根燃烧试验 电缆垂直燃烧试验

电线电缆单根燃烧试验 电线电缆单根燃烧试验是一种用来评估电线电缆在受到火焰作用时的燃烧性能的测试方法。这种试验通常是将电线电缆垂直固定&#xff0c;然后使用特定的火焰源对其进行燃烧&#xff0c;以观察电线电缆的燃烧行为和燃烧速度。通过这个试验&#xff0c;可以评估…

护眼台灯哪个品牌好?几款性价比最高的护眼台灯推荐

在过去&#xff0c;科技尚未发展至如今这般先进水平时&#xff0c;晚上需要照明的时候&#xff0c;我们通常只能依赖白炽灯。尽管白炽灯以其低成本和接近自然光的显色性获得了一定的青睐&#xff0c;随着时代的发展&#xff0c;现在市面上出现了更为护眼的选择——LED台灯。然而…