java中的文件流File

news/2025/2/5 10:53:44/文章来源:https://www.cnblogs.com/ishoulgodo/p/18698968

数据 + 流(转)操作

IO
I表示的是:输入Input
O表示的是:Output
Stream表示流转
java中的管道不止一个。并且管道有可能不是一样的。
有的管道粗有的管道细


File的常用方法

文件/目录信息
isFile()判断是否是一个文件,返回是一个布尔值,true表示文件。false不是文件
isDirectory()判断是否是一个目录(文件夹),true表示文件夹。false不是文件夹
exists()判断文件或目录是否存在,true表示存在,false表示不存在getName()获取文件或目录的名称(不包括路径)。 
getPath()获取文件或目录的相对路径
getAbsolutePath()获取文件或目录的绝对路径
length()获取文件的大小(字节数)
lastModified()获取文件或目录的最后修改时间(返回毫秒数)文件/目录操作:
createNewFile()	创建一个新的空文件(如果文件已存在则返回 false),目录必须要存在,否则会出现异常。
mkdir()	创建单级目录(如果父目录不存在则失败)。
mkdirs()创建多级目录(包括所有必要的父目录),如果没有父级目录,也会给你创建
delete()删除文件或空目录(如果删除成功返回 true)。
renameTo(File dest)	将文件或目录重命名或移动到目标路径。目录内容
list()返回目录中的文件和子目录的名称数组(String[])。
listFiles()返回目录中的文件和子目录的 File 对象数组(File[])。
list(FilenameFilter filter)返回符合过滤条件的文件和子目录的名称数组。
listFiles(FileFilter filter)返回符合过滤条件的文件和子目录的 File 对象数组。
判断当前的file对象是否是文件 File.isFile()
package part;import java.io.File;public class Java01 {public static void main(String[] args) {// 创建file对象,它的参数可以是文件路径,也可以是文件夹的路径File file = new File("./04.md");// 判断当前的file对象是否是文件,返回的是布尔值。true是文件,false不是文件System.out.println(file.isFile()); // true}
}

new File(url)的路径问题

new File(url)中url可以是一个文件路径,也可以是目录路径。
当然也可以是一个不存在的路径
因此我们的 File 可能是一个文件或者文件夹或者不存在的对象

是否是一个文件夹 File.isDirectory

package part;import java.io.*;public class Java01 {public static void main(String[] args) {// 数据源文件对象File srcFile =new File("./test");// 是否是一个文件夹if(srcFile.isDirectory()){System.out.println("Directory");}}
}

判断这个文件对象是否存在 srcFile.exists()

package part;import java.io.*;public class Java01 {public static void main(String[] args) {// 数据源文件对象File srcFile =new File("./test");// 判断文件或目录是否存在,返回来的是一个布尔值if(srcFile.exists()){System.out.println("存在这个对象");}else{System.out.println("不存在这个对象");}}
}

创建目录 File.mkdirs(),如果没有父级目录,也会给你创建

package part;import java.io.*;public class Java01 {public static void main(String[] args) {// 数据源文件对象File srcFile =new File("./testqq/213123");// 文件对象是否存在if(!srcFile.exists()){//如果文件对象不存在的话,我会创建一个目录// 如果我的项目中没有这个目录,他会创建一个这样的多级目录的哈srcFile.mkdirs(); }}
}

创建文件 File.createNewFile

package part;import java.io.*;public class Java01 {public static void main(String[] args) {// 数据源文件对象,如果/testqq/213123不存在的话,就会出现异常的哈File srcFile =new File("./testqq/213123/xuexie.txt");try {// 创建一个新文件,可能会有异常的哈,因此使用try-catch进行捕获// 创建的目录必须要存在,否则会出现异常。srcFile.createNewFile();} catch (IOException e) {throw new RuntimeException(e);}}
}

获取文件的基本信息:名称-对路径-最后修改的时间-大小(字节)

package part;import java.io.*;public class Java01 {public static void main(String[] args) {// 数据源文件对象File srcFile =new File("./test/hello.txt");// 文件的名称 hello.txtSystem.out.println(srcFile.getName());// 文件的绝对路径 D:\javaprojiect\goodStudy\javaStudy\.\test\hello.txtSystem.out.println(srcFile.getAbsolutePath());// 文件最后修改的时间,时间戳 1738681949390System.out.println(srcFile.lastModified());// 文件的大小 22System.out.println(srcFile.length());}
}

获取文件夹的相关信息:名称-绝对路径-最后修改时间

package part;import java.io.*;public class Java01 {public static void main(String[] args) {// 数据源文件对象File srcFile =new File("./test");// 文件夹的名称 testSystem.out.println(srcFile.getName());// 文件夹的绝对路径 D:\javaprojiect\goodStudy\javaStudy\.\testSystem.out.println(srcFile.getAbsolutePath());// 文件夹最后修改的时间,时间戳 1738681949390System.out.println(srcFile.lastModified());}
}

复制文件-为啥只复制了一个字母(文字)

package part;import java.io.*;public class Java01 {public static void main(String[] args) {// 数据源文件对象File srcFile =new File("./test/hello.txt");// 数据目的的文件对象(自动生成)File srcCopy =new File("./test/helloCpy.txt");if(srcFile.exists()){System.out.println("File exists");}// 文件输入流(管道对象)FileInputStream fis = null;// 文件输出流(管道对象)FileOutputStream fos = null;try {// 可能会有异常,需要使用try-catchfis = new FileInputStream(srcFile);fos = new FileOutputStream(srcCopy);// 打开阀门,开始读取数据了哈(输出),这里也会产生异常的,使用 IOExceptionint srcData = fis.read();// 打开阀门,开始写入数据了哈(写入)fos.write(srcData);} catch (IOException e) {// 这里使用throw new RuntimeException(e);} finally {if(fis != null){// fis.close 可能也会存在异常,因此也需要给新增上try-catchtry {fis.close();} catch (IOException e) {throw new RuntimeException(e);}}if(fos != null){// fos.close 可能也会存在异常,因此也需要给新增上try-catchtry {fos.close();} catch (IOException e) {throw new RuntimeException(e);}}}}
}

为啥只复制了一个字母(文字)

通过上面的图片我们发现只复制了一个字母,为啥只复制了一个呢?
我们读取文件的时候 int srcData = fis.read();没有判断是否已经读取完。
就开始写入 fos.write(srcData);
如果我们还没有读完就开始写入的话。
这样就会产生一个问题: 就只会复制文件的一个字母(文字)。
因此我们需要判断文件是否已经全部读取完了。

文件读取的值是-1表示的是什么意思

如果文件数据已经读取完了,再去读取数据,读取的数据值是: -1, 表示已经读取完了。

复制文件

package part;import java.io.*;public class Java01 {public static void main(String[] args) {// 数据源文件对象File srcFile =new File("./test/hello.txt");// 数据目的的文件对象(自动生成)File srcCopy =new File("./test/helloCpy.txt");if(srcFile.exists()){System.out.println("File exists");}// 文件输入流(管道对象)FileInputStream fis = null;// 文件输出流(管道对象)FileOutputStream fos = null;try {// 可能会有异常,需要使用try-catchfis = new FileInputStream(srcFile);fos = new FileOutputStream(srcCopy);
//           // 打开阀门,开始读取数据了哈(输出),这里也会产生异常的,使用 IOException
//           int srcData = fis.read();
//           // 打开阀门,开始写入数据了哈(写入)
//            fos.write(srcData);int srcData =-1;// 如果读取的值是-1,说明已经读取完了。我们给他关闭掉while((srcData=fis.read())!=-1){fos.write(srcData);}} catch (IOException e) {// 这里使用throw new RuntimeException(e);} finally {if(fis != null){// fis.close 可能也会存在异常,因此也需要给新增上try-catchtry {fis.close();} catch (IOException e) {throw new RuntimeException(e);}}if(fos != null){// fos.close 可能也会存在异常,因此也需要给新增上try-catchtry {fos.close();} catch (IOException e) {throw new RuntimeException(e);}}}}
}

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

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

相关文章

自建ES集群CVM IO问题

ES集群故障问题描述永辉自建ES集群CVM 出现IO Hang的情况,子机无法登陆,进程也无法kill掉,需要进行节点重启切换来恢复业务。问题背景:2021-05-31日客户侧TKE三台子机的io Await很高,使用的都是本地nvme盘子机,这边登陆了一台机器上面检查发现cpu使用率和io的等待时间都很…

代码随想录——单调栈

单调栈 要求「从 栈顶 到 栈底 的元素是单调递增(或者单调递减)」。其中满足从栈顶到栈底的元素是单调递增的栈,叫做「单调递增栈」。满足从栈顶到栈底的元素是单调递减的栈,叫做「单调递减栈」。(有的文章是从栈底到栈顶,本文默认从栈顶到栈底) 怎么能想到用单调栈呢?…

在线协作软件怎么选?从团队规模到项目需求,这篇指南全告诉你!

在线协作软件已经成为现代团队不可或缺的工具。无论是国外成熟的 Trello、Asana,还是国内功能强大的板栗看板,都各有特色,能够满足不同团队的需求。希望本文推荐的软件能够帮助您找到最适合团队的协作利器,提升工作效率,实现团队目标。在数字化时代,远程办公和团队协作已…

win11下如何选择7-zip为默认的压缩软件打开方式

推荐各位使用7-zip压缩文件,好用,体积小,内存占用少,压缩速度快。这个软件免费,很良心的软件 第1步:进入你安装好的7-zip目录,找到7zFM.exe文件第2步:找到弹窗的“工具”菜单,在此菜单中找到“选项”。然后按照下图方式进行操作第3步:任意找到系统中的一个压缩文件,…

推荐一个便宜、效果挺好的机场。

【DOVE云】全球网络加速服务,在网络世界里畅游,低至¥20CNY/月 https://dovee.cc/aff.php?akaupx1Esky3QQf9

DeepSeek技术报告解析:为什么DeepSeek-R1 可以用低成本训练出高效的模型

DeepSeek-R1 通过创新的训练策略实现了显著的成本降低,同时保持了卓越的模型性能。本文将详细分析其核心训练方法。 成本优势对比 在推理成本方面,DeepSeek-R1 展现出显著优势:输入 tokens : $0.55/百万 tokens 输出 tokens : $2.19/百万 tokens相比之下,O1 的推理成本:输…

Kubernetes集群安全(八)

基本安全机制说明:Kubernetes 作为一个分布式集群的管理工具,保证集群的安全性是其一个重要的任务。API Server 是集群内部各个组件通信的中介,也是外部控制的入口。所以 Kubernetes 的安全机制基本就是围绕保护 API Server 来设计的。Kubernetes 使用了认证(Authenticatio…

修改Linux环境下Springboot项目读取配置文件路径

Springboot项目,修改Linux读取配置文件路径1、在“src/main/resources/META-INF/spring.factories”增加文件路径: org.springframework.boot.env.EnvironmentPostProcessor=\com.code.config.ConfigEnvironmentPostProcessor 2、在指定路径下创建文件:ConfigEnvironmentPos…

离职注意事项

离职前,有几个文件夹是必须删除的: 1.个人文件夹 在离职前,一定要清除个人文件夹里的所这有文件。这些文件可能包括个人照片、简历、工作笔记、项目文件等。这些文件包含了你的个人信息以及公司的商业机密,如果不及时删除,可能会给公司带来潜在的风险。 2. 邮件文件夹 如果…

使用国内镜像源

export HF_ENDPOINT=https://hf-mirror.compip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

AI 工程必读好书:10 本关于 AI 科学与工程的深刻见解

AI 工程的必读书籍 —— 以及《Brave New Words》(图片为作者原创作品) 几年前,我推荐了 《数据科学必读好书》 和 《数据科学必读好书 2》 中的 21 本书。自那以后,很多事情发生了变化。虽然数据科学家和机器学习工程师仍然是大型公司的必要岗位,但 “AI 工程师” 这一特定…

manacher(马拉车)

// Luogu P3805 【模板】manacher 算法 include include include using namespace std; const int N=3e7; char a[N],s[N]; int d[N]; //回文半径函数 void get_d(char*s,int n){ d[1]=1; for(int i=2,l,r=1;i<=n;i++){ if(i<=r)d[i]=min(d[r-i+l],r-i+1); while(s[i-…