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.内置装饰器(…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
c# 局部函数 定义、功能与示例
C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...
