当前位置: 首页 > news >正文

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流

流的分类:

  • 按照读写的方向讲,是输入流和输出流
  • 按照读写单位分,字节流和字符流
  • 流的功能不同分,节点流和处理流

流的家族体系

输入输出
字节流InputStreamOutputStream
字符流ReaderWriter

在这里插入图片描述

节点流和处理流
节点流:直接连接在文件上的
处理流:套在其他流上的

文件流:
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)]
就将图片从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.飞蛾。目前市面上的测试用例管理工具有很多,但由于针对的项目、领域、目标用户&#xff…...

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.内置装饰器&#xff08…...

微信小程序之bind和catch

这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...