File类,IO流,字节输入流,字节输出流,字符输出流,字符入流,缓存流,对象流,序列化ID

1.File类

1.文件创建

创建的是文件还是文件夹,跟调用的方法有关。和后缀无关。

//创建File对象  \: window中使用\.第一个表示转移符。 而我们在linux或mac使用/.  java语言跨平台操作。 window系统中也可以使用/
File file=new File("E:/hhhh/a.txt");
//创建文件,存在则不创建
boolean file1 = file.createNewFile();
System.out.println(file1);File file2=new File("E:/hhhh/bbb");
//创建文件夹
file2.mkdir();
//创建多级文件夹
File file3=new File("E:/hhhh/b/c/d");
file3.mkdirs();

2.删除

File file8=new File("a.text");
file8.createNewFile();
file8.delete();
File file9=new File("bbb");
file9.mkdirs();
file9.delete();

renameTo重命名|剪切

File file=new File("E:/hhhh/a.txt");
file.renameTo(new File("E:/197.txt"));
file.setReadOnly();//设置文件只读
File file2=new File("E:/hhhh/bbb");
file2.mkdir();
file2.renameTo(new File("E:/hhhh/ccc"));

查询

File file=new File("demo");//获取路径
String name = file.getName();//获取文件名
String path = file.getPath();//获取文件相对路径
String absoluteFile = file.getAbsolutePath();//获取文件的绝对路径
String canonicalPath = file.getCanonicalPath();
System.out.println("名称:"+name);
System.out.println("相对路径:"+path);
System.out.println("绝对路径:"+absoluteFile);
System.out.println("绝对路径:"+canonicalPath);

 //获取指定目录下的子文件或子文件夹名
String[] list = file.list();
for(String s:list){System.out.println(s);
}//获取指定目录下子文件或子文件夹对象
File[] files = file.listFiles();for(File f:files){
System.out.println(f.getName()+"是否为目录"+f.isDirectory());
}

File file = new File("E:/hhhh/179.txt");
//判断文件/文件夹是否存在
boolean exists = file.exists();
if (exists){System.out.println("存在");
}else {System.out.println("不");file.mkdirs();
}
boolean directory = file.isDirectory();
System.out.println("是否是目录"+directory);
File file1 = new File("E:/hhhh/178.txt");
boolean file2 = file1.isFile();
System.out.println("是否是文件"+file2);

File递归

public class Digui {public static void main(String[] args) {File file=new File("demo");print(file);}public static void print(File file){if(file.isFile()){if(file.getName().endsWith(".java")) {System.out.println(file.getName() + "路径" + file.getAbsolutePath());}}else {File[] files = file.listFiles();if(files.length>0) {for (File f : files) {print(f);}}}}
}

2.IO流

IO流分类

以程序为基准点,写入文件里就是输出流,文件写进程序里就是输入流

1.流向:输入流和输出流
2.内容:字节流和字符流
3.方式:节点流和处理流

IO流提供了四个基类:

InputStream: 字节输入流

OutputStream: 字节输出流

Reader: 字符输入流

Writer: 字符输出流

1.字节输出流

public static void main(String[] args) throws IOException {//如果指定的文件不存在则自动创建. 目录不存在则出错//true允许追加内容,否则会覆盖原有内容OutputStream out = new FileOutputStream("E:/hhhh/a.txt",true);//out.write('a');out.write('9');out.write('a');out.write('b');String str="hello world";//字符串转换为字节数组类型。 getBytes()out.write(str.getBytes());//从0开始写入2个out.write(str.getBytes(),0,2);out.close();
}

2.字节输入流

InputStream inputStream = new FileInputStream("E:/hhhh/a.txt");
//读取一个字节,返回一个int类型,-1表示读取完毕
int read = inputStream.read();System.out.println((char)read);//存放读取的字节
byte[] bs=new byte[50];
//每次读取的字节个数
int read=-1;
while ((read=inputStream.read(bs))!=-1){String str=new String(bs,0,read);System.out.println(str);
}
inputStream.close();

把文件复制到另一个盘,并改名

public static void main(String[] args) throws Exception {InputStream in=new FileInputStream("demo/a.txt");//InputStream in=new FileInputStream("demo/tu.jpg");OutputStream out=new FileOutputStream("demo2/c.txt");//OutputStream out=new FileOutputStream("demo2/qsl.jpg");byte[] bs=new byte[2048];int len=-1;while ( (len=in.read(bs))!=-1){//out.write(bs);out.write(bs,0,len);}in.close();out.close();
}

3.字符输出流

Writer w=new FileWriter("demo2/t.txt");
w.write("你好,啊啊啊");
w.write("你好,啊啊啊",0,3);
w.close();

4.字符输入流

 Reader r=new FileReader("demo2/t.txt");
/* 一次读取一个int len=-1;while(  (len=r.read())!=-1){System.out.println((char) len);}*///一次读取多个char[] chars=new char[50];int size=-1;while ((size=r.read(chars))!=-1) {System.out.println(new String(chars, 0, size));}r.close();

 public static void main(String[] args) throws Exception {Reader r=new FileReader("D:/小说.txt");Writer w=new FileWriter("E:/hhhh/小说cope.txt");Writer w2=new FileWriter("demo2/小说.txt");char[] c=new char[1024];int size=-1;while (   (size=r.read(c))!=-1 ){w.write(c,0,size);w2.write(c,0,size);}r.close();w.close();w2.close();
}

5.缓存流

在基础流上再进行了一次封装,提高了IO效率(基础流的容量小于缓存流时)

BufferInputStream

BufferOutputStream

public static void main(String[] args) throws Exception{long l = System.currentTimeMillis();InputStream in=new FileInputStream("demo/tu.jpg");BufferedInputStream bi=new BufferedInputStream(in);OutputStream out=new FileOutputStream("demo2/tu.jpg");BufferedOutputStream bs=new BufferedOutputStream(out);int len=-1;byte[] bytes=new byte[5];while ((len=bi.read(bytes))!=-1){bs.write(bytes,0,len);}bs.close();out.close();bi.close();in.close();long l1 = System.currentTimeMillis();System.out.println(l1-l);
}

BufferedReader BufferedWriter

6.对象流

序列化时要保证对象类是可序列化的

implements Serializable

序列化,把对象信息写入到文件或网盘中

对象类需要可序列化,implements Serializable

Game game=new Game("张渺",18,9000);
OutputStream ops=new FileOutputStream("demo/game.txt");
ObjectOutputStream oops=new ObjectOutputStream(ops);
oops.writeObject(game);
oops.close();
ops.close();

反序列化,把文件中写的对象信息输入到java程序中

InputStream is=new FileInputStream("demo/game.txt");
ObjectInputStream ois=new ObjectInputStream(is);
Object o = ois.readObject();
System.out.println(o);
ois.close();
is.close();

序列化ID

当完成序列化后,又修改了原本对象类中的内容且没有指定序列化ID,就不能完成反序列化

所有需要在序列化之前就指定序列化ID的值

保证后期修改了类成员也可以完成反序列化

private static final long serialVersionUID=1L;

 

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

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

相关文章

AMD的AI芯片Instinct系列介绍

AMD最强AI芯片发布! 在旧金山举行的Advancing AI 2024大会上,AMD推出Instinct MI325X AI加速器(以下简称MI325X),直接与英伟达的Blackwell芯片正面交锋。 现场展示的数据显示,与英伟达H200的集成平台H200 …

第六届国际科技创新(IAECST 2024)暨第四届物流系统与交通运输(LSTT 2024)

重要信息 会议官网:www.lstt.org 大会时间:2024年12月6-8日 大会地点:中国-广州 简介 第六届国际科技创新暨第四届物流系统与交通运输国际(LSTT 2024)将于2024年12月6-8日在广州举办,这是一个集中探讨…

Docker desktop 改变存储位置

项目场景: 在windows下,使用docker desktop是使用docker最简单直接的方式。但是,这毕竟是一个可视化的界面,使用起来还是和linux环境下的版本有很大的区别。 例如,使用docker desktop,会默认将镜像以及容…

多线程 03 实现方式

继续变强 主流框架都看了 springcloud , redis ,mq ,nginx ,docker , 也有实操 继续看多线程,和 大数据 请假面试 本来要拿离职补偿和失业金,结果公司要加薪续签,哎,反正不忙,要是主动离职我就亏了,那就…

Android 图形系统之三:SurfaceControl

在 Android 系统中,SurfaceControl 是一个关键的类,用于管理应用窗口和屏幕上的显示内容。它与 SurfaceFlinger 紧密交互,通过 BufferQueue 提供高效的图形缓冲区管理能力。SurfaceControl 是 Android 的显示架构中不可或缺的部分&#xff0c…

Spring的事务管理

tx标签用于配置事务管理用于声明和配置事务的相关属性 transaction-manager指定一个事务管理器的引用,用于管理事务的生命周期。propagation指定事务的传播属性,决定了在嵌套事务中如何处理事务。isolation指定事务的隔离级别,用于控制事务之…

【VUE3】npm : 无法加载文件 D:\Program\nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本。

npm : 无法加载文件 D:\Program\nodejs\npm.ps1。未对文件 D:\Program\nodejs\npm.ps1 进行数字签名。无法在当前系统上运行该脚本。有关运行脚本和设置执行策略的详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_ Execution_Policies。…

品优购PC端静态页面(列表页、详情页、登录页)

首页可转至品优购静态首页制作查看,接下来继续制作品优购静态页面(列表页、详情页、登录页)。 一、列表页 品优购列表页制作准备工作 列表页面是新的页面,我们需要新建页面文件 list.html因为列表页的头部和底部基本一致&#xff…

前端页面或弹窗在线预览文件的N种方式

需求:后端返回给前端一个地址后,在前端页面上或则在弹框中显示在线的文档、表格、图片、pdf、video等等,嵌入到前端页面 方式一: 使用vue-office 地址:vue-office简介 | vue-office 个人感觉这个插件是最好用的&#x…

成都睿明智科技有限公司抖音电商服务的新引擎

在这个短视频风起云涌的时代,抖音不仅成为了人们休闲娱乐的首选,更是商家们竞相角逐的电商新蓝海。在这片充满机遇与挑战的海域中,成都睿明智科技有限公司如同一艘装备精良的航船,引领着众多企业向抖音电商的深水区进发。今天&…

独家|京东调整职级序列体系

原有的M、P、T、S主序列将正式合并为新的专业主序列P。 作者|文昌龙 编辑|杨舟 据「市象」独家获悉,京东已在近日在内部宣布对职级序列体系进行调整,将原有的M、P、T、S主序列正式合并为新的专业主序列P,合并后的职级体系将沿用原有专业序…

免费开源的微信开发框架

请求参数 Header 参数 export interface ApifoxModel {"X-GEWE-TOKEN": string;[property: string]: any; } Body 参数application/json export interface ApifoxModel {/*** 设备ID*/appId: string;/*** 是否允许*/enabled: boolean;[property: string]: any; }…

在内网工作时,如何使用 vscode remote ssh 去连接内网服务器?

来源:https://stackoverflow.com/questions/56671520/how-can-i-install-vscode-server-in-linux-offline 看这个回答: 一般来说,内网会提供 vscode 安装包,remote-ssh 的 vsix,先安装好。 随后,保证自己…

YOLOv8实战无人机视角目标检测

本文采用YOLOv8作为核心算法框架,结合PyQt5构建用户界面,使用Python3进行开发。YOLOv8以其高效的实时检测能力,在多个目标检测任务中展现出卓越性能。本研究针对无人机目标数据集进行训练和优化,该数据集包含丰富的无人机目标图像…

【二维动态规划:交错字符串】

介绍 编程语言:Java 本篇介绍一道比较经典的二维动态规划题。 交错字符串 主要说明几点: 为什么双指针解不了?为什么是二维动态规划?根据题意分析处转移方程。严格位置依赖和空间压缩优化。 题目介绍 题意有点抽象&#xff0c…

小米路由mini刷PDCN教程补充

花了10天帮助一个网友解决小米路由刷PDCN做打印服务器失败的过程,经历颇多。特别把中间的一些坑写出来,希望大家不要遇到。 首先网上好多教程写的都不错,很适合小白。推荐如下: 刷breed和PDCN方法: 小米路由器mini刷…

Unity ShaderLab 实现交互地毯

实现思路: 将一个位置坐标值传入到shader的顶点着色器中,和这个值位置相同的顶点沿着法线的y轴方向偏移,然后计算这个值与顶点的距离,在这个范围内的顶点,和凸起的点的位置做插值操作。 Shader Graph实现如下&#x…

浏览器语言和Accept-Language请求头指纹

注意:本文仅供学习交流使用 Navigator 对象的语言设置可以帮助网站识别您的首选语言。网站会基于这个值,调整向您呈现内容的所用语言。与其他任意Navigator 对象值一样,它也可用于浏览器指纹识别。 1. 浏览器语言:代表浏览器界面显…

数字IC后端实现之PR工具中如何避免出现一倍filler的缝隙?

在数字IC后端实现中,由于有的工艺foundary不提供Filler1,所以PR工具Innovus和ICC2在做标准单元摆放时需要避免出现两个标准单元之间的缝隙间距是Filler1。为了实现这个目的,我们需要给PR工具施加一些特殊的placement constraint(典…

03.ES7 04.ES8

3.1.Array.includes Includes 方法用来检测数组中是否包含某个元素&#xff0c;返回布尔类型值 <script>// includes const mingzhu [王二,张三,李四,王五];//判断console.log(mingzhu.includes(张三));//trueconsole.log(mingzhu.includes(周六));//false//indexOf …