文件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.rhkb.cn/news/346739.html

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

相关文章

SpringSecurity入门(四)

18、权限管理/授权 18.1、针对url配置 配置SecurityConfig package com.wanqi.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.bu…

(免费领源码)基于 node.js#vue#mysql的网上游戏商城35112-计算机毕业设计项目选题推荐

摘 要 本论文主要论述了如何使用node.js语言开发一个基于vue的网上游戏商城&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;本系统采用的数据库是Mysql&#xff0c;使用node.js的koa技术技术构建的一个管理系统&#xff0c;实现了本系统的全部功能。在…

云计算-期末复习题-选择/判断/填空/简答(1)

目录 填空题/简答题 单选题 多选题 判断题 云计算期末复习部分练习题&#xff0c;下一章会补全。祝大家好好复习&#xff0c;顺利通过课程。 填空题/简答题 >保障云基本安全的对策包括&#xff08;&#xff09;、&#xff08;&#xff09;和&#xff08;&#xff09; &…

Linux:桌面系统中的文件后缀和类型

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 Linux中的文件后缀与Windows系统有些不同&#xff0c;因为其似乎没有很重要&#xff0c;一个文件是否可执行对后缀没有要求。但是&#xff0c;后缀依然可以用于表示文件…

机器学习笔记:label smoothing

在传统的分类任务中&#xff0c;我们通常使用硬标签&#xff08;hard labels&#xff09; 即如果一个样本属于某个类别&#xff0c;其对应的标签就是一个全0的向量&#xff0c;除了表示这个类别的位置为1。例如&#xff0c;在一个3类分类任务中&#xff0c;某个样本的标签可能是…

实用软件分享---简单菜谱 0.3版本 几千种美食(安卓)

专栏介绍:本专栏主要分享一些实用的软件(Po Jie版); 声明1:软件不保证时效性;只能保证在写本文时,该软件是可用的;不保证后续时间该软件能一直正常运行;不保证没有bug;如果软件不可用了,我知道后会第一时间在题目上注明(已失效)。介意者请勿订阅。 声明2:本专栏的…

【Python】 装饰器,可不只是装饰作用!

Python 是一种高级编程语言&#xff0c;以其清晰的语法和代码可读性而著称。在 Python 中&#xff0c;“at” 符号&#xff08;&#xff09;通常被称为装饰器&#xff08;Decorator&#xff09;的语法符号。装饰器是一种设计模式&#xff0c;用于修改或增强函数、方法或类的行为…

Spring Cloud Gateway详解

一、前言Spring Cloud Gateway的作用 路由转发&#xff1a; Spring Cloud Gateway作为微服务架构中的网关服务&#xff0c;充当所有请求的入口。它可以根据请求的路径、Host、Header、请求参数等多种条件进行路由&#xff0c;将请求转发到相应的微服务实例。路由信息由ID、目的…

2024蓝桥杯初赛决赛pwn题全解

蓝桥杯初赛决赛pwn题解 初赛第一题第二题 决赛getting_startedbabyheap 初赛 第一题 有system函数&#xff0c;并且能在bss上读入字符 而且存在栈溢出&#xff0c;只要过掉check函数即可 check函数中&#xff0c;主要是对system常规获取权限的参数&#xff0c;进行了过滤&…

git版本控制工具常用命令

一、本地仓库管理 push 向远程推送代码 pulll 拉取代码 二、远程仓库管理 三、分支操作 本地主分支master 远程主分支main head指向当前分支 查看&#xff1a;git branch 创建分支: git branch 名字 切换分支&#xff1a;git checkout 名字 合并分支&#xff1a;git…

VS2019创建c++动态链接库dll与调用方法

VS2019创建c动态链接库dll与调用方法 1.点击文件-》新建-》项目&#xff0c;输入dll,选择具有导出项的(DLL)动态链接库 2.输入一个文件名&#xff1a;dll2 头文件.h 3.添加加减法函数&#xff1a; // 下列 ifdef 块是创建使从 DLL 导出更简单的 // 宏的标准方法。此 DLL 中的…

爱普生SMD3225贴片晶振升级版TSX-3225

爱普生有一款外形尺寸3.2*2.5mm的无源贴片晶振&#xff0c;型号TSX-3225&#xff0c;也是非常直观的能从型号分辨其封装尺寸大小的&#xff0c;被广泛应用于便携式的无线传输设备&#xff0c;同时&#xff0c;这也是一款非常成熟的产品&#xff0c;毕竟SMD3225封装是目前市场主…

部署LVS-DR模式(附带详细实验)

目录 一.数据包流向分析 二.DR模式特点 三.ARP问题及解决办法 四.实验部署 1.配置负载调度器&#xff08;192.168.80.105&#xff09; 1.1.安装并启用ipvsadm 1.2.配置虚拟IP地址&#xff08;VIP&#xff1a;192.168.80.100&#xff09; 1.3.调整 proc 响应参数 1.4.配…

springboot 在线心理咨询管理系统-计算机毕业设计源码82552

摘 要 随着互联网趋势的到来&#xff0c;各行各业都在考虑利用互联网将自己推广出去&#xff0c;最好方式就是建立自己的互联网系统&#xff0c;并对其进行维护和管理。在现实运用中&#xff0c;应用软件的工作规则和开发步骤&#xff0c;采用Java技术建设在线心理咨询管理系统…

Elasticsearch index 设置 false,为什么还可以被检索到?

在 Elasticsearch 中&#xff0c;mapping 定义了索引中的字段类型及其处理方式。 近期有球友提问&#xff0c;为什么设置了 index: false 的字段仍能被检索。 本文将详细探讨这个问题&#xff0c;并引入列式存储的概念&#xff0c;帮助大家更好地理解 Elasticsearch 的存储和查…

IO模型和多路转接

叠甲&#xff1a;以下文章主要是依靠我的实际编码学习中总结出来的经验之谈&#xff0c;求逻辑自洽&#xff0c;不能百分百保证正确&#xff0c;有错误、未定义、不合适的内容请尽情指出&#xff01; 文章目录 1.IO 概要1.1.IO 低效原因1.2.IO 常见模型1.2.1.阻塞 IO1.2.2.非阻…

shell脚本简单命令

shell脚本 脚本就是可运行代码的集合&#xff0c;脚本语言&#xff08;计算机语言&#xff09;脚本的特点&#xff1a;从上到下&#xff0c;按行执行。 python 脚本语言 格式更严谨 严格的执行锁进。也是从上到下按行执行。 shell脚本就是在shell环境&#xff08;/bin/bash&…

Word忘记保存?请使用Word隐藏备份文件

大家用Word写材料时&#xff0c;如果忘记保存&#xff0c;可以使用Word隐藏备份文件找回未保存的文件。&#xff08;仅供参考&#xff09; Windows7、8、10、11系统的设置如下&#xff1a; 执行上述操作&#xff0c;可以在word文件菜单中信息项的自动保存中找到了。上述内容…

Qt for Android 申请摄像头权限

步骤 1. 添加用户权限 方式1: AndroidManifest.xml 中新增&#xff08;不添加后面申请选项时不弹窗&#xff09; 或者再Qt Creator中直接添加 方式2: .pro 中引用multimedia 模块&#xff0c;编译时配置自动添加 <uses-permission android:name"android.permissi…

我给KTV服务生讲解防抖,他竟然听懂了

端午节三天假期&#xff0c;的最后一天&#xff0c;我和朋友闲来无事&#xff0c;想着去唱会儿歌吧&#xff0c;好久不唱了&#xff0c;于是吃了午饭&#xff0c;石景山就近找了一家KTV&#xff0c;我们团好了卷就过去了。 装修还算不错&#xff0c;很快找到服务生&#xff0c…