文件操作-IO

文件操作-IO

  • 1.认识文件
    • 1.什么是文件
    • 2.文件路径
  • 2.java中操作文件
    • 2.1 File类的用法
  • 3.InputStream和OutputStream的用法

1.认识文件

1.什么是文件

文件是计算机系统中用来存储数据的基本单位。它是一种用于持久性存储数据的命名、有序的数据集合.计算机系统通过文件系统来组织、管理和访问文件。文件系统提供了一种机制,使得用户和程序可以创建、读取、写入、修改和删除文件,同时也提供了文件的层次结构和存储管理功能。

2.文件路径

在这里插入图片描述

  • 相对路径:相对路径描述了文件或目录相对于当前工作目录的位置.相对路径基于当前所处位置的文件或目录.使用相对路径:. ./Download/aaa
  • 绝对路径是从文件系统根目录开始的完整路径描述,它从文件系统的根目录开始描述文件的位置,包括所有必要的目录结构信息.绝对路径表示为:Data(D:)/Download/aaa
    . ./表示当前文件夹的上个文件
    ./表示当前文件夹

2.java中操作文件

2.1 File类的用法

java.io.File类提供了对文件和目录进行操作的基本方法。它不涉及文件内容的读写,但是可以用于创建、删除、重命名文件或目录,以及获取文件信息等.以下是File类的常见用法:

文件位置就是当前项目创建的位置

  1. 创建文件对象
File file = new File("path/to/your/file.txt"); // 创建文件对象,指定文件路径
  1. 检查文件或目录是否存在
boolean exists = file.exists(); // 检查文件或目录是否存在
  1. 创建新文件或目录
boolean created = file.createNewFile(); // 创建新文件
// 或者
File directory = new File("path/to/your/directory");
boolean dirCreated = directory.mkdir(); // 创建新目录
// 注意:mkdir() 方法只能创建单级目录,如果需要创建多级目录可以使用 mkdirs() 方法
  1. 获取文件信息
String fileName = file.getName(); // 获取文件名
String filePath = file.getAbsolutePath(); // 获取文件的绝对路径
boolean isDirectory = file.isDirectory(); // 检查是否是目录
  1. 删除文件
boolean deleted = file.delete(); // 删除文件
// 或者
file.deleteOnExit();//等到程序退出后再删除
  1. 文件重命名
File oldFile = new File("./newFileName.txt");
File newFile = new File("./src/newFileName.txt");
oldfile.renameTo(newFile); // 重命名文件
//将oldFile重命名为newFile并移动到src目录下

3.InputStream和OutputStream的用法

InputStream 和 OutputStream 是 Java I/O 的核心抽象类,使用时需要具体的实现类,用于处理字节流。它们是操作数据输入和输出的基础,可以用于读取和写入文件、网络流、内存中的数据

 public static void main(String[] args) throws IOException {//在使用完流之后,需要关闭它们以释放资源。在 try-with-resources 语句块中创建流可以确保在结束时自动关闭。//如果不关闭,就会造成资源泄露!!! 也可使用close进行关闭,但是可能会执行不到,比如中途抛异常,return等,//也可采取finally,但代码不美观try(InputStream inputStream = new FileInputStream("d:/aaa/t.txt")) {while (true) {byte[] buf = new byte[1024];int n = inputStream.read(buf);if (n == -1) {break;}for (int i = 0; i < n; i++) {//十六进制方式进行打印System.out.printf("%x ", buf[i]);}//String构造方法内部对字节数组进行编码转换String s = new String(buf, 0, n, "utf-8");System.out.println(s);}}}

对于字符类型使用InputStream进行读取还是比较麻烦的,其实我们可以使用Scanner搭配流对象进行操作,我们一般使用Scanner都是进行输入的,在参数内部添加System.in,在源码中in的类型就是public final static InputStream in = null;也就是说我们可以传入自己的InputStream对象,对字符类型进行打印.

public static void main(String[] args) throws IOException {try(InputStream inputStream = new FileInputStream("d:/aaa/t.txt")) {Scanner scanner = new Scanner(inputStream);String s = scanner.nextLine();System.out.println(s);}
}
//注意:Scanner只是用来读文本文件,不适合读取二进制文件,否则会乱码

利用 OutputStreamWriter 进行字符写入

 public static void main(String[] args) throws IOException {try(OutputStream ot = new FileOutputStream("d:/aaa/t.txt")) {String s = "hello";//转换为字节数组,存放到数组中byte[] b = s.getBytes();//数组b中的数据写入到输出流ot中ot.write(b);//将输出流中的缓冲区数据写入到文件中,确保数据被及时的写入文件ot.flush();}}

System.out.println()中out的源码public final static PrintStream out = null;我们可以传入自己的PrintStream来输出

public static void main(String[] args) throws IOException {//再写入之前要先打开文件,输出流对象会在打开文件之后,清空文件内容,所以我们可以追加,加个true即可try(OutputStream ot = new FileOutputStream("d:/aaa/t.txt",true)) {PrintStream printStream = new PrintStream(ot);printStream.println("hello");ot.flush();}}

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

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

相关文章

gitlab高级功能之容器镜像仓库

今天给大家介绍一个gitlab的高级功能 - Container Registry&#xff0c;该功能可以实现docker镜像的仓库功能&#xff0c;将gitlab上的代码仓的代码通过docker构建后并推入到容器仓库中&#xff0c;好处就是无需再额外部署一套docker仓库。 文章目录 1. 参考文档2. Container R…

【动手学深度学习】(九)Kaggle房价预测

文章目录 一、代码1.下载和缓存数据集 【相关总结】1.os.makedirs()2.os.path.join()3.os.path.exits()4.os.path.dirname() 一、代码 题目链接 1.下载和缓存数据集 建立字典DATA_HUB&#xff0c;将数据集名称的字符串映射到数据集相关的二元组上&#xff0c;这个二元组包含…

Linux 进程(三)

Linux进程状态的查看&#xff1a; 这是Linux内核源代码对于进程状态的定义&#xff1a; R运行状态&#xff08;running&#xff09;: 并不意味着进程一定在运行中&#xff0c;它表明进程要么是在运行中要么在运行队列里。 S睡眠状态&#xff08;sleeping): 意味着进程在…

openGauss学习笔记-138 openGauss 数据库运维-例行维护-检查时间一致性

文章目录 openGauss学习笔记-138 openGauss 数据库运维-例行维护-检查时间一致性138.1 操作步骤 openGauss学习笔记-138 openGauss 数据库运维-例行维护-检查时间一致性 数据库事务一致性通过逻辑时钟保证&#xff0c;与操作系统时间无关&#xff0c;但是系统时间不一致会导致…

[传智杯 #3 决赛] 商店

disangan333 想给 disangan233 买一个礼物&#xff0c;于是他和你一起逛商店。 超详细&#xff0c;超详细&#xff0c;超详细&#xff0c;超详细 题目描述 有 n 名同学去逛商店&#xff0c;店里有 m 个物品&#xff0c;第 i 人有 wi​ 块钱&#xff0c;第 i 个物品价格 ci​…

18487.1 - 2015 电动汽车充电系统标准 第1部分 关键点梳理

一、部分知识介绍 1、连接方式 使用电缆和连接器将电动汽车接入电网&#xff08;电源&#xff09;的方法。 1.1、连接方式A 1.2、连接方式B 1.3、连接方式C 2、电动汽车控电设备 2.1、按照输出电压分类 1&#xff09;交流 单相 220V&#xff0c;三相 380V. 2&#xff09…

【超全】React学习笔记 下:路由与Redux状态管理

React学习笔记 React系列笔记学习 上篇笔记地址&#xff1a;【超全】React学习笔记 上&#xff1a;基础使用与脚手架 中篇笔记地址&#xff1a;【超全】React学习笔记 中&#xff1a;进阶语法与原理机制 React路由概念与理解使用 1. 引入 React路由是构建单页面应用(SPA, Sin…

Kotlin学习之03

nonLocalReturn返回调用的方法&#xff0c;下面直接返回main方法 inline fun nonLocalReturn(block:() -> Unit) { block() } fun main() { nonLocalReturn { return } } 禁止non-local-return&#xff0c;使用crossinline关键字 public inline fun IntArray.forEach(…

布局问题1:addSpacing()和setSpacing()函数的区别?

addSpacing()和setSpacing()函数的区别? 1&#xff09;addSpacing() &#xff1a;插入间距10&#xff0c;用于增加两个控件之间距离&#xff1b; 2&#xff09;setSpacing()&#xff1a;设置各部件的相邻距离&#xff0c;用于设置属于一个布局中的所有控件之间的间距。 这里举…

CSS 选择器优先级,!important 也会被覆盖?

目录 1&#xff0c;重要性2&#xff0c;专用性3&#xff0c;源代码顺序 CSS 属性值的计算过程中。其中第2步层叠冲突只是简单说明了下&#xff0c;这篇文章来详细介绍。 层叠冲突更广泛的被称为 CSS选择器优先级计算。 为什么叫层叠冲突&#xff0c;可以理解为 CSS 是 Cascadi…

基于 Python+flask 构建态势感知系统(附完整源码)

一、开发 一个基于linux的态势感知系统&#xff0c;基于python和flask框架开发&#xff0c;项目文件目录如下&#xff1a; admin -核心算法 charts -图表生成 model -类 app.py -主文件 config.py -配置文件 install.py -安装文件 二、安装 1、配置 数据库密码默认设…

redis单机版本安装

redis单机版本安装 1.redis单机版源码编译安装搭建(4.0示例) redis下载地址 https://redis.io/download redis源码编译 #!/bin/sh yum install -y wget gcc gcc-c make tar openssl openssl-devel cmakecd /usr/local/src wget http://download.redis.io/releases/redis-4…

华为杯研究生数学建模优秀参考论文(优秀论文参考2004-2022年)

一、背景介绍 中国研究生数学建模竞赛是一项面向在校研究生进行数学建模应用研究的学术竞赛活动&#xff0c;是广大在校研究生提高建立数学模型和运用互联网信息技术解决实际问题能力&#xff0c;培养科研创新精神和团队合作意识的大平台&#xff0c;大赛赞助单位为华为技术有限…

如何基于OpenCV和Sklearn库开展数据降维

大家在做数据分析或者机器学习应用过程中&#xff0c;不可避免的需要对数据进行降维操作&#xff0c;好多垂直行业业务中经常出现数据量少但维度巨大的情况。数据降维的目的是为了剔除不相关或冗余特征&#xff0c;使得数据易用&#xff0c;去除无用数据&#xff0c;实现数据可…

什么是Daily Scrum?

Daily Scrum&#xff08;每日站会&#xff09;&#xff0c;Scrum Master要确保这个会在每天都会开。这个会的目的就是检查正在做的东西和方式是否有利于完成Sprint目的&#xff0c;并及时做出必要的调整。 每日站会一般只开15分钟&#xff0c;为了让事情更简单些&#xff0c;这…

【数据中台】开源项目(3)-DataSphere Studio

DataSphere Studio&#xff08;简称 DSS&#xff09;是微众银行自研的数据应用开发管理集成框架。 基于插拔式的集成框架设计&#xff0c;及计算中间件 Linkis &#xff0c;可轻松接入上层各种数据应用系统&#xff0c;让数据开发变得简洁又易用。 在统一的 UI 下&#xff0c;D…

无线物理层安全学习

文章目录 3.17到3.203.85到3.88 3.17到3.20 3.85到3.88

论文阅读——Img2LLM(cvpr2023)

arxiv&#xff1a;[2212.10846] From Images to Textual Prompts: Zero-shot VQA with Frozen Large Language Models (arxiv.org) 一、介绍 使用大语言模解决VQA任务的方法大概两种&#xff1a;multi-modal pretraining and language-mediated VQA&#xff0c;即多模态预训练…

进程的创建:fork()

引入 创建进程的方式我们已经学习了一个&#xff01;在我们运行指令(或者运行我们自己写的可执行程序)的时候不就是创建了一个进程嘛&#xff1f;那个创建进程的方式称为指令级别的创建子进程&#xff01; 那如果我们想要在代码中创建进程该怎么办呢&#xff1f; fork() for…

【Win和Linux更换Java版本自动化脚本】

Windows版 要将Windows中的Java环境变量从Java 8更改为Java 9&#xff0c;并确保更改在重启计算机后仍然生效&#xff0c;请按照以下步骤操作&#xff1a; 首先&#xff0c;确保已经安装了Java 9。如果没有&#xff0c;请从Oracle官方网站下载并安装Java 9&#xff1a;https:/…