Java---文件,流✨❤️

文章目录

    • 1.遍历文件夹
    • 2.遍历子文件夹
    • 3.练习流
    • 4.以字节流的形式读取文件内容
    • 5.以字节流的形式向文件写入数据顶折纠问
    • 6 .写入数据到文件

1.遍历文件夹

一般说来操作系统都会安装在C盘,所以会有一个 C:\WINDOWS目录。
遍历这个目录下所有的文件(不用遍历子目录)
找出这些文件里,最大的和最小(非0)的那个文件,打印出他们的文件名
注: 最小的文件不能是0长度

package Basic.wordhard;import java.io.File;public class Demo {public static void main(String[] args) {File f=new File("C:\\Windows");// 以文件数组的形式,返回当前文件夹下的所有文件(不包含子文件及子文件夹)File fs[]=f.listFiles();File max_file = null,min_file=null;long min=Long.MAX_VALUE;long max=0;for(File e:fs){if(e.length()>max){max=e.length();max_file=e;}if(e.length()!=0&&e.length()<min){min=e.length();min_file=e;}}System.out.println("找出的最大文件为"+max_file.getName()+"    文件大小"+max);System.out.println("找出的最小文件为"+min_file.getName()+"    文件大小"+min);}
}

在这里插入图片描述

2.遍历子文件夹

同上的练习,要求遍历子文件夹

package Basic.wordhard;
import java.io.File;
public class Demo {static File minFile = null;static File maxFile = null;public static void main(String[] args) {File dir = new File("C:\\WINDOWS");traverseFolder(dir);if (minFile != null) {System.out.println("最小的文件是 " + minFile.getName() + ",其大小是 " + minFile.length() + " 字节");}if (maxFile != null) {System.out.println("最大的文件是 " + maxFile.getName() + ",其大小是 " + maxFile.length() + " 字节");}}public static void traverseFolder(File dir) {File[] files = dir.listFiles();if (files == null || files.length == 0) {return;}for (File file : files) {if (file.isFile()) {if (minFile == null || (file.length() < minFile.length() && file.length() != 0)) {minFile = file;}if (maxFile == null || file.length() > maxFile.length()) {maxFile = file;}} else if (file.isDirectory()) {traverseFolder(file);}}}
}

在这里插入图片描述

3.练习流

当不同的介质之间有数据交互的时候,JAVA就使用流来实现。
数据源可以是文件,还可以是数据库,网络甚至是其他的程序
比如读取文件的数据到程序中,站在程序的角度来看,就叫做输入流
输入流: InputStream
输出流:OutputStream

题目:建立一个文件输入流

package Basic.wordhard;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;public class Demo {public static void main(String[] args) {try{File f=new File("D://lol.txt");FileInputStream fis=new FileInputStream(f);// 通过这个输入流,就可以把数据从硬盘,读取到Java的虚拟机中来,也就是读取到内存中}catch (IOException e){e.printStackTrace();}}
}

4.以字节流的形式读取文件内容

InputStream是字节输入流,同时也是抽象类,只提供方法声明,不提供方法的具体实现。
FileInputStream 是InputStream子类,以FileInputStream 为例进行文件读取

package Basic.wordhard;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;public class Demo {public static void main(String[] args) {try{File f=new File("d://lol.txt");FileInputStream fis=new FileInputStream(f);byte array[]=new byte[(int) f.length()];fis.read(array);for(byte e:array){System.out.println(e);}fis.close();}catch (IOException e){e.printStackTrace();}}
}

5.以字节流的形式向文件写入数据顶折纠问

OutputStream是字节输出流,同时也是抽象类,只提供方法声明,不提供方法的具体实现。
FileOutputStream 是OutputStream子类,以FileOutputStream 为例向文件写出数据
注: 如果文件d:/lol2.txt不存在,写出操作会自动创建该文件。
但是如果是文件 d:/xyz/lol2.txt,而目录xyz又不存在,会抛出异常

package Basic.wordhard;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class Demo {public static void main(String[] args) {try{File f=new File("D:\\lol2.txt");FileOutputStream fos=new FileOutputStream(f);byte Date[]={97,98};fos.write(Date);fos.close();}catch (IOException e){e.printStackTrace();}}
}

6 .写入数据到文件

以字节流的形式向文件写入数据 中的例子,当lol2.txt不存在的时候,是会自动创建lol2.txt文件的。
但是,如果是写入数据到d:/xyz/lol2.txt,而目录xyz又不存在的话,就会抛出异常。
那么怎么自动创建xyz目录?
如果是多层目录 d:/xyz/abc/def/lol2.txt 呢?

package Basic.wordhard;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class Demo {public static void main(String[] args) {try{File f=new File("d:/xyz/abc/def");if(!f.exists()){f.mkdirs();}byte data[]={97,98};File f1=new File(f,"lol2.txt");FileOutputStream fos=new FileOutputStream(f1);fos.write(data);fos.close();}catch (IOException e){e.printStackTrace();}}
}

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

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

相关文章

HTTP/2、HTTP/3分别解决了什么问题

总的来说就是HTTP/1.1是请求-响应模型导致队头阻塞问题&#xff0c;HTTP2是TCP层面导致队头阻塞问题 HTTP/2 多路复用&#xff0c;解决了HTTP/1.1队头阻塞问题 HTTP/1.1 的实现是基于请求-响应模型的。同一个连接中&#xff0c;HTTP 完成一个事务&#xff08;请求与响应&…

3.4作业

课上代码复习&#xff1a; 广播接收端代码: #include<myhead.h> int main(int argc, const char *argv[]) {//创建套接字int rfd socket(AF_INET,SOCK_DGRAM,0);if(rfd -1){perror("socket error");return -1;}printf("rfd %d\n",rfd);//填充地…

台式电脑电源各线的电压和电流输出和输出电流

台式电脑电源是电脑硬件的重要组成部分。 它为计算机的各个部件提供所需的电压和电流。 不同的硬件设备和组件有不同的电压和电流输出。 下面详细介绍台式电脑电源各线的电压&#xff0c;包括3.3V、5V、12V、-12V、-5V和5VSB&#xff0c;以及它们的输出电流和用途。 3.3V&#…

【AI+CAD】(一)ezdxf 解析DXF文件

DXF文件格式理解 DXF文件格式是矢量图形文件格式&#xff0c;其详细说明了如何表示不同的图形元素。 DXF是一个矢量图形文件&#xff0c;它捕获CAD图形的所有元素&#xff0c;例如文本&#xff0c;线条和形状。更重要的是&#xff0c;DXF是用于在CAD应用程序之间传输数据的图形…

STM32自学☞I2C

这里只是大体介绍&#xff0c;具体的可参考STM32数据手册

数据结构与算法-选择排序

引言 在计算机科学中&#xff0c;数据结构和算法是两个至关重要的基石。它们共同决定了程序的效率、可读性和可维护性。本文我们将聚焦于一种基础而直观的排序算法——选择排序&#xff0c;并探讨其内在的工作机制以及在实际应用中的优缺点。 一、什么是选择排序&#xff1f; …

xss.haozi.me:0x07

<img src1 onerroralert(1)

tomcat下载安装配置教程

tomcat下载安装配置教程 我是使用tomcat下载安装及配置教程_tomcat安装-CSDN博客 此贴来进行安装配置&#xff0c;原文21年已经有些许不同。 下载tomcat 官网&#xff1a;http://tomcat.apache.org/ 我们老师让安装8.5以上&#xff0c;所以我直接选择版本9 点击9页面之后…

HTTPS的实现原理

图片来源&#xff1a;HTTPS 详解一&#xff1a;附带最精美详尽的 HTTPS 原理图 - 个人文章 - SegmentFault 思否 加密流程按图中的序号分为&#xff1a; 客户端请求 HTTPS 网址&#xff0c;然后连接到 server 的 443 端口 (HTTPS 默认端口&#xff0c;类似于 HTTP 的80端口)。…

Windows批处理:bat文件学习

目录 第一章、快速了解Windows批处理1.1&#xff09;Windows批处理相关概念介绍1.1.1&#xff09;批处理的起源1.1.2&#xff09;bat文件介绍 1.2&#xff09;Demo1.2.1&#xff09;创建文件添加命令1.2.2&#xff09;bat脚本中的命令解释 第二章、实例2.1&#xff09;点击bat文…

navicat安装11.3

一、安装navicat 1、下载navicat 2、解压压缩包 3、点击exe文件 4、输入密钥&#xff1a; NAVH-WK6A-DMVK-DKW3 5、点击打开&#xff1a; 输入连接参数&#xff1a; 6、查看连接好仓库 7、 在使用navicat来编写sql语句 8、编写语句 连接不上问题&#xff0c;检查问题&#…

【Vue3】深入理解Vue中的ref属性

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

Redis 之三:Redis 的发布订阅(pub/sub)

概念介绍 Redis 发布订阅 (pub/sub) 是一种消息通信模式&#xff0c;它允许客户端之间进行异步的消息传递 Redis 客户端可以订阅任意数量的频道。 模型中的角色 在该模型中&#xff0c;有三种角色&#xff1a; 发布者&#xff08;Publisher&#xff09;&#xff1a;负责发送信…

嵌入式中7个底层数据结构分解

在编程的世界里&#xff0c;数据结构是构建信息框架的骨架。就像现实生活中的建筑需要精心设计的结构一样&#xff0c;我们的数据也需要合适的结构来保证程序的高效和稳定。今天&#xff0c;我们就像探险家一样&#xff0c;一起去探索七大数据结构的奥秘&#xff0c;并揭开它们…

光路科技:工业以太网交换机引领工业互联网新篇章

随着全球范围内工业4.0的浪潮不断涌动&#xff0c;工业互联网作为其核心驱动力&#xff0c;正引领着工业生产向智能化、网络化的崭新阶段迈进。在这一转型的浪潮中&#xff0c;光路科技凭借其卓越的工业互联设备与创新解决方案&#xff0c;正为工业互联网领域的发展注入新的活力…

Linux环境基础开发工具使用

目录 1.Linux软件包管理器yum 什么是软件包 关于 lrzsz 查看软件包 2.Linux开发工具 2.1.vim的基本概念 2.2vim的基本操作 2.3vim命令模式命令集 1.插入模式 2.从插入模式切换为命令模式 3.移动光标 4.删除文字 5.复制 6.替换 7.撤销上一次的操作 8.更改 2.4v…

[动态规划]---part1

前言 作者&#xff1a;小蜗牛向前冲 专栏&#xff1a;小蜗牛算法之路 专栏介绍&#xff1a;"蜗牛之道&#xff0c;攀登大厂高峰&#xff0c;让我们携手学习算法。在这个专栏中&#xff0c;将涵盖动态规划、贪心算法、回溯等高阶技巧&#xff0c;不定期为你奉上基础数据结构…

Linux设备模型(九) - bus/device/device_driver/class

一&#xff0c;设备驱动模型 1&#xff0c;概述 在前面写的驱动中&#xff0c;我们发现编写驱动有个固定的模式只有往里面套代码就可以了&#xff0c;它们之间的大致流程可以总结如下&#xff1a; 实现入口函数xxx_init()和卸载函数xxx_exit() 申请设备号 register_chrdev_r…

Spring源码:手写SpringDI

我们是在实现了SpringIOC的基础上&#xff0c;进行拓展&#xff0c;IOC实现源码可以查看&#xff1a;手写SpringIOC 文章目录 一、分析二、实现1、构造注入1&#xff09;分析2&#xff09;版本1BeanReferenceBeanDefinitionGenericBeanDefinitionDefaultBeanFactory1、改造构造…

ES入门六:Suggesters Api实践

都是负担在很多app上&#xff0c;当我们输入某些内容时候&#xff0c;它会立即做一些补全操作&#xff0c;如果我想实现上述的需求&#xff0c;我们就可以使用ES提供的Suggesters Api。那Suggesters是如何做到的那&#xff1f;简单来说&#xff0c;Suggesters会将输入的文本拆分…