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.内置装饰器(…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
