Java File相关操作
文章目录
- File文件操作
- IO流
- 处理流
- 缓冲流
- 转换流
- 对象流
File文件操作
利用File类来操作。
文件操作中常用到相对目录和绝对路径
package org.File; import java.io.File; public class demo01 { public static void main(String[] args) { try{ File file = new File("./test.txt");
// 文件路径是以项目目录为起点的。
// 创建一个文件。 file.createNewFile(); }catch (Exception e ) { e.printStackTrace(); } }
}
获取文件名
package org.File; import java.io.File; public class demo02 { public static void main(String[] args) { try { File file = new File("src/main/java/org/File/Files/test.txt"); file.createNewFile();
// 不能创建文件夹,创建的是文件
// System.out.println(file.getParentFile());//得到上一层文件夹的对象
// System.out.println(file.getParent());//得到上一层文件夹
// System.out.println(file.exists());//判断文件是否存在 file.mkdir();file.mkdirs();
// 创建文件夹,一般选择mkdirs() }catch (Exception e ){ e.printStackTrace(); } }
}
文件的所有相关操作
package org.File; import java.io.File; public class demo02 { public static void main(String[] args) { try { File file = new File("src/main/java/org/File/Files/test.txt"); file.createNewFile();
// 不能创建文件夹,创建的是文件
// System.out.println(file.getParentFile());//得到上一层文件夹的对象
// System.out.println(file.getParent());//得到上一层文件夹
// System.out.println(file.exists());//判断文件是否存在 file.mkdir();file.mkdirs();
// 创建文件夹,一般选择mkdirs() // 重命名 file.renameTo(new File("src/main/java/org/File/Files/test2.md"));
// 删除文件 file.delete(); System.out.println(file.isAbsolute());
// 判断是否是绝对路劲
// 判断是不是文件夹 System.out.println(file.isDirectory()); System.out.println(file.isFile());
// 判断是不是文件 System.out.println(file.length());
// 查看文件大小 System.out.println(file.getName());
// 文件名字。 }catch (Exception e ){ e.printStackTrace(); } }
}
创建文件的完整步骤
package org.File; import java.io.File;
import java.io.IOException;
import java.text.FieldPosition; public class demo03 { public static void main(String[] args) { File file = new File("resource/test.txt");
// 1、判断上层文件夹是否存在 File parentFile = file.getParentFile(); if (!parentFile.exists()) { parentFile.mkdirs(); }
// 2、创建文件 try { file.createNewFile(); } catch (IOException e) { throw new RuntimeException(e); } }
}
IO流
流的分类:
- 按照读写的方向讲,是输入流和输出流
- 按照读写单位分,字节流和字符流
- 流的功能不同分,节点流和处理流
流的家族体系
| 输入 | 输出 | |
|---|---|---|
| 字节流 | InputStream | OutputStream |
| 字符流 | Reader | Writer |

节点流和处理流
节点流:直接连接在文件上的
处理流:套在其他流上的
文件流:
FileInputStream
FileOutputStream
FileReader
FileWriter
package org.FileStream; import com.sun.org.apache.xpath.internal.operations.String; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException; public class demo01 { public static void main(String[] args) throws Exception { // 创建流 FileInputStream fils = new FileInputStream(new File("./src/main/resources/a.txt")); int read = fils.read(); System.out.println(read);
// 输出115 s的Ascii码 System.out.println((char) read); byte[] bs = new byte[1024]; int len = fils.read(bs ); //返回多少个字节 System.out.println(new String()); } }
读取文件的一套写法
package org.FileStream; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException; public class demo02 { public static void main(String[] args) throws Exception { FileInputStream files = new FileInputStream(new File("./src/main/resources/a.txt")); byte[] bytes = new byte[1024]; int len=0; while ((len= files.read(bytes))!=-1){ String s = new String(bytes, 0, len); System.out.println(s); }
// 关闭文件流 files.close(); }
}
写入文件:
public FileOutputStream(File file, boolean append)
append为true时是在文件后加入数据
默认是false,会清空文件,再添加数据。
package org.FileStream; import com.sun.org.apache.xpath.internal.operations.String; import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader; public class demo04 { public static void main(String[] args) throws Exception { FileReader files = new FileReader(new File("./src/main/resources/a.txt")); char[] cs = new char[1024]; int len = 0 ; while ((len = files.read(cs))!=-1){ System.out.println(new String(cs,0 ,len)); } files.close(); }
}
package org.FileStream; import java.io.File;
import java.io.FileWriter;
import java.io.IOException; public class demo05 { public static void main(String[] args) throws IOException { FileWriter files = new FileWriter(new File("./src/main/resources/a.txt"),true); files.write("simple"); files.flush(); files.close(); }
}
将一张图片从一个地方复制到另一个地方
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d9QbRfYz-1676899099153)(../../images/Pasted%20image%2020230220192957.png)]](https://img-blog.csdnimg.cn/894361c2b64e41f2b9421540cd64c2d9.png)
就将图片从a移动到b
package org.FileStream; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream; public class demo06 { public static void main(String[] args) throws Exception { File f = new File("a/ba1.jpg"); FileInputStream fis = new FileInputStream(new File("a/ba1.jpg")); FileOutputStream fos = new FileOutputStream(new File("b/bb1.jpg"));
// 读取内容 byte[] bs = new byte[1024]; int len =0; while ((len = fis.read(bs))!=-1){//读取数据 fos.write(bs,0,len);//写数据 } fis.close(); fos.flush(); fos.close(); // 如果是剪切 ,就把原来的图片删掉就行了
// f.delete(); }
}

处理流
缓冲流
带有一个缓冲区的数据流
BufferedInputStream
BufferedOutputStream
BufferedReader
BufferedWriter
package org.Process_of_Stream; import java.io.*; public class demo01_Buffer_stream { public static void main(String[] args) throws Exception {
// BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File("/src/main/resources/a.txt")));
// 这里面套了三层东西,缓冲区套在节点流上,节点流套在文件流上 String path = Thread.currentThread().getContextClassLoader().getResource("a.txt").getPath(); System.out.println(path);
// 获取路径 BufferedReader br = new BufferedReader(new FileReader(new File(path))); System.out.println(br.readLine()); //读文本文件最好用的方法 System.out.println(br.readLine()); }
}
标准的读取文件的写法
package org.Process_of_Stream; import java.io.*; public class demo01_Buffer_stream { public static void main(String[] args) throws Exception {
// BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File("/src/main/resources/a.txt")));
// 这里面套了三层东西,缓冲区套在节点流上,节点流套在文件流上 String path = Thread.currentThread().getContextClassLoader().getResource("a.txt").getPath(); System.out.println(path);
// 获取路径 BufferedReader br = new BufferedReader(new FileReader(new File(path))); // System.out.println(br.readLine()); //读文本文件最好用的方法
// System.out.println(br.readLine()); String str =""; while ((str=br.readLine())!=null ){ System.out.println(str); } }
}
转换流
有时需要将流进行转换. 一般我们得到的会是一个字节流. 这是一般我们需要转换成字符流
java中有的转换:
字节流 --> 字符流
InputStreamReader
OutputStreamWriter
package org.Process_of_Stream; import jdk.nashorn.internal.runtime.regexp.joni.exception.SyntaxException; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner; public class demo02_Convert_stream { public static void main(String[] args) throws Exception {
// 系统输入是一个字节流 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 通过转换流,将字节流转换成了字符流 String s = br.readLine(); System.out.println(s); }
}
package org.Process_of_Stream; import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer; public class demo03_Conver_stream { public static void main(String[] args) throws IOException { Writer writer = new OutputStreamWriter(System.out); writer.write("hello simplecatlover"); writer.flush();
// writer.close(); //这个流不可以关 System.out.println("sgjagjla"); }
}
对象流
也就是序列化和反序列化接口
两个类:
ObjectInputStream
ObjectOutputStream
类:
一定要implements Serializable
package org.Process_of_Stream.obj; import java.io.Serializable; public class Person implements Serializable { private int id; private String name; private int age; public Person(int id, String name, int age) { this.id = id; this.name = name; this.age = age; } public void setId(int id) { this.id = id; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } public int getId() { return id; } public String getName() { return name; } public int getAge() { return age; }
}
序列化:
package org.Process_of_Stream.obj; import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream; public class test1 { public static void main(String[] args) throws Exception { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("person.dat"))); Person p = new Person(1,"simple",2); oos.writeObject(p); oos.flush(); oos.close(); }
}
反序列化:
package org.Process_of_Stream.obj; import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream; public class test1 { public static void main(String[] args) throws Exception { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("person.dat"))); Person p = new Person(1,"simple",2); oos.writeObject(p); oos.flush(); oos.close(); }
}
相关文章:
Java File相关操作
文章目录File文件操作IO流处理流缓冲流转换流对象流File文件操作 利用File类来操作。 文件操作中常用到相对目录和绝对路径 package org.File; import java.io.File; public class demo01 { public static void main(String[] args) { try{ File file new File("…...
LabVIEW利用矢量量化直方图开发人脸识别
LabVIEW利用矢量量化直方图开发人脸识别通常,人脸识别系统会检查场景的静止图像或视频图像,然后使用存储的人脸数据库识别或验证场景中的一个或多个人。我程序专注于静止图像人脸识别,使用来自众所周知的人脸数据库的人脸图像,用于…...
RK3568工业开发板工控板说明
说明HW356X-GKA是采用中高端的通用型 SOC,一款基于Rockchip公司RK3568处理器的工控主板。主板标配处理器为Cortex-A55四核,最高主频2GHz的RK3568处理器,内置4GB DDR4内存(最大8GB),32GB eMMC存储。集成4核 arm架构 A55 处理器和Ma…...
JavaScript Web API 来构建你不了解的网站
随着技术的日新月异,为开发人员提供了令人难以置信的新工具和API。 但据了解,在100 多个 API中,只有5%被开发人员积极使用。 随着技术的日新月异,为开发人员提供了令人难以置信的新工具和API。但据了解,在100 多个 A…...
KeePass敏感信息明文传输漏洞复现 (CVE-2023-24055)
一、漏洞描述 漏洞简述 KeePass 是一款免费的开源密码管理器,可帮助您以安全的方式管理您的密码。您可以将所有密码存储在一个数据库中,该数据库由一把万能钥匙锁定。因此,您只需记住一个主密钥即可解锁整个数据库。数据库文件使用目前已知…...
Android 11 中的权限更新
官网:https://developer.android.com/about/versions/11/privacy/permissions#audit-by-feature Android 11 使用户能够为位置、麦克风和摄像头指定更精细的权限。此外,系统会重置针对 Android 11 或更高版本的未使用应用程序的权限,如果应用…...
october-cms
环境准备 靶机链接:百度网盘 请输入提取码 提取码:3e4s 虚拟机网络链接模式:桥接模式 攻击机系统:kali linux 2021.1 信息收集 1.探测目标靶机ip。 2.探测靶机开放端口和服务情况。 漏洞探测 1.访问网页 2.用dirsearch扫描…...
抖音怎样报白?报白需要审核哪些资料呢
抖音怎样报白?报白需要审核哪些资料呢 抖音报白需要什么资料,翡翠原石产品如何开通报白#报白#小店报白#小店运营#抖音#抖音小店运营 文/专栏作家百收 随着抖音在国内流行起来,抖音上每天会有大量的视频更新,越来越多的年轻人也加…...
Spring中的AOP
Spring中的AOP 文章目录Spring中的AOPAOP概述相关术语总结作用AOP概述 AOP(Aspect Programming) 是一种设计思想,是面向切面编程思想 跟OOP(面向对象编程)有什么关系呢? AOP面向切面编程然后是OOP(面向对象编程)的补充和完善。…...
文件系统与动静态库的基本了解
目录文件系统与动静态库的基本了解文件系统了解Access Modify Changeinode硬链接软链接静态库与动态库概念静态库的制作使用静态库动态库的制作使用动态库总结如何制作文件系统与动静态库的基本了解 文件系统 了解Access Modify Change 当文件没有被打开时,他们存…...
netty——IO、NIO、AIO进化之路
IO、NIO、AIO进化之路BIO——同步阻塞IO伪异步阻塞IONIO——同步非阻塞IOAIO——异步IO总结本文会说明各种IO的特点、分别解决了什么样的问题做一个分析阐述,并结合Java代码例子来辅助理解,像这些的历史演进和详细的底层原理网上很多,所以我们…...
AI稳定生成图工业链路打造
前沿这篇文章会以比较轻松的方式,跟大家交流下如何控制文本生成图片的质量。要知道如何控制文本生成质量,那么我们首先需要知道我们有哪些可以控制的参数和模块。要知道我们有哪些控制的参数和模块,我们就得知道我们文本生成图片的这架机器或…...
20230220华南金牌主板u盘启动
20230220华南金牌主板u盘启动 2023/2/20 10:29 百度搜索:华南金牌主板u盘启动 https://www.zhihu.com/question/498121895?utm_id0 华南金牌主板b85u盘启动怎么设置? 华南金牌主板b85u盘启动怎么设置 海的那边 上小学后才发现还是幼儿园好混…… 华南一般是F7和F1…...
测试团队都在用哪些不错的测试用例管理平台?盘点6大主流测试管理系统
测试团队使用的主流测试用例管理平台:1.PingCode ;2.TestRail;3.Testlink;4.ZephyrJira;5.TestCenter;6.飞蛾。目前市面上的测试用例管理工具有很多,但由于针对的项目、领域、目标用户ÿ…...
linux 系统编程之线程
线程 文章目录线程1 线程概念2 NPT安装线程 man page:查看指定线程的 LWP 号:3 线程的特点4 线程共享资源5 线程非共享资源6 线程的优缺点7线程常用操作1 线程号pthread_self函数:pthread_equal函数:参考代码2 错误返回值分析参考代码3 线程的…...
从0开始学python -35
Python3 File(文件) 方法 open() 方法 Python open() 方法用于打开一个文件,并返回文件对象。 在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。 注意:使用 open() 方法一定要保证关闭文件对…...
1.14 golang中的结构体
1. 结构体 Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念。Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性。 1.1. 类型别名和自定义类型 1.1.1. 自定义类型 在Go语言中有一些基本的数据类型,如string、整…...
原创不易,坚持更难
早上CSDN发消息,今天是创作满三年的纪念日,邀请写一篇博文,谈谈感受 开博原因 2020年是一个特殊的年份,疫情刚爆发第一年,也是第一次居家办公,从过完年就一直居家办公,一直居家了38天。2020年…...
计算机网络 | 谈谈TCP的流量控制与拥塞控制
文章目录一、TCP的流量控制1、利用滑动窗口实现流量控制【⭐⭐⭐】2、如何破解【死锁】局面❓二、TCP的拥塞控制1、拥塞控制的一般原理① 解决网络拥塞的误区② 拥塞控制与流量控制的关系【重点理解✔】2、TCP的拥塞控制方法① 接收窗口【rwnd】与拥塞窗口【cwnd】② 慢开始和拥…...
Flask入门(7):内置装饰器(钩子函数)
目录7.内置装饰器(钩子函数)7.1 before_request7.2 after_request7.3 before_first_request7.4 error_handlers7.5 template_filter7.6 template_global复习装饰器基础及其应用,可参考文章:闭包和装饰器 7.内置装饰器(…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
