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

ava中的文件操作、IO流、递归和字符集

目录

File类的使用

创建File对象

创建和删除文件

遍历文件夹

IO流

字节流

读取文件

字符流

读取文本文件

写入文本文件

递归

计算阶乘

文件搜索

字符集

编码与解码


File类的使用

在Java中,File类用于表示文件和目录的路径。它提供了一些方法来创建、删除、获取文件信息等操作,但不能直接用于读写文件内容。

创建File对象
import java.io.File;public class FileExample {public static void main(String[] args) {// 创建File对象File file = new File("example.txt");// 判断文件是否存在if (file.exists()) {System.out.println("文件存在");} else {System.out.println("文件不存在");}}
}

在上面的代码中,我们使用File类来检查一个文件是否存在。

创建和删除文件
import java.io.File;
import java.io.IOException;public class CreateDeleteFile {public static void main(String[] args) {File file = new File("example.txt");try {// 创建新文件if (file.createNewFile()) {System.out.println("文件已创建");} else {System.out.println("文件已存在");}// 删除文件if (file.delete()) {System.out.println("文件已删除");} else {System.out.println("删除文件失败");}} catch (IOException e) {e.printStackTrace();}}
}

这段代码展示了如何创建和删除文件。使用createNewFile()方法创建文件,使用delete()方法删除文件。

遍历文件夹

import java.io.File;public class ListFiles {public static void main(String[] args) {File dir = new File("path/to/directory");// 列出目录中的文件和目录String[] files = dir.list();if (files != null) {for (String file : files) {System.out.println(file);}}}
}

使用list()方法可以遍历指定目录下的所有文件和文件夹。

IO流

IO流是Java中用于处理输入和输出的类,包括字节流和字符流。

字节流

字节流用于处理字节数据,可以用于读取和写入二进制数据。

读取文件
import java.io.FileInputStream;
import java.io.IOException;public class ByteInputStreamExample {public static void main(String[] args) {try (FileInputStream fis = new FileInputStream("example.txt")) {int content;while ((content = fis.read()) != -1) {System.out.print((char) content);}} catch (IOException e) {e.printStackTrace();}}
}

上面的代码使用FileInputStream读取文件的字节内容并输出。

import java.io.FileOutputStream;
import java.io.IOException;public class ByteOutputStreamExample {public static void main(String[] args) {try (FileOutputStream fos = new FileOutputStream("example.txt")) {String data = "Hello, World!";fos.write(data.getBytes());} catch (IOException e) {e.printStackTrace();}}
}

使用FileOutputStream将字符串写入文件中。

字符流

字符流用于处理字符数据,适合处理文本文件。

读取文本文件
import java.io.FileReader;
import java.io.IOException;public class CharInputStreamExample {public static void main(String[] args) {try (FileReader fr = new FileReader("example.txt")) {int content;while ((content = fr.read()) != -1) {System.out.print((char) content);}} catch (IOException e) {e.printStackTrace();}}
}

FileReader用于读取文本文件中的字符数据。

写入文本文件
import java.io.FileWriter;
import java.io.IOException;public class CharOutputStreamExample {public static void main(String[] args) {try (FileWriter fw = new FileWriter("example.txt")) {fw.write("Hello, World!");} catch (IOException e) {e.printStackTrace();}}
}

递归

递归是一种解决问题的方法,其中函数会直接或间接调用自身。

计算阶乘

public class Factorial {public static void main(String[] args) {int number = 5;System.out.println(number + "的阶乘是:" + factorial(number));}public static int factorial(int n) {if (n == 1) {return 1;} else {return n * factorial(n - 1);}}
}

上面的递归方法计算一个数字的阶乘。

文件搜索

import java.io.File;public class FileSearch {public static void main(String[] args) {File dir = new File("path/to/search");String filename = "target.txt";searchFile(dir, filename);}public static void searchFile(File dir, String filename) {if (dir.isDirectory()) {File[] files = dir.listFiles();if (files != null) {for (File file : files) {if (file.isDirectory()) {searchFile(file, filename);} else if (file.getName().equals(filename)) {System.out.println("找到文件:" + file.getAbsolutePath());}}}}}
}

递归用于在指定目录及其子目录中搜索目标文件。

字符集

字符集是字符和字节之间转换的规则。在Java中,常用的字符集包括ASCII、GBK和UTF-8。

编码与解码

import java.nio.charset.StandardCharsets;
import java.util.Arrays;public class CharsetExample {public static void main(String[] args) {String text = "Hello, 世界";// 编码byte[] utf8Bytes = text.getBytes(StandardCharsets.UTF_8);System.out.println("UTF-8 编码: " + Arrays.toString(utf8Bytes));// 解码String decodedText = new String(utf8Bytes, StandardCharsets.UTF_8);System.out.println("解码后的字符串: " + decodedText);}
}

这段代码展示了如何使用UTF-8字符集对字符串进行编码和解码。

通过这些示例,您可以理解如何在Java中使用文件操作、IO流、递归和字符集。这些技术是处理文件和数据的基础,了解它们可以帮助您开发更强大和灵活的应用程序。

相关文章:

ava中的文件操作、IO流、递归和字符集

目录 File类的使用 创建File对象 创建和删除文件 遍历文件夹 IO流 字节流 读取文件 字符流 读取文本文件 写入文本文件 递归 计算阶乘 文件搜索 字符集 编码与解码 File类的使用 在Java中,File类用于表示文件和目录的路径。它提供了一些方法来创建、删…...

生成式人工智能安全评估体系构建

文章目录 前言一、人工智能安全治理的现状1.1 国际安全治理现状1.2 国内安全治理现状二、构建人工智能安全评估体系1.1 需要对生成式人工智能技术的安全性、可靠性、可控性、公平性等维度进行全面的考量。1.2 应对生成式人工智能全维度风险。1.3 在体系化应对框架中,应明确法律…...

NRBO-XGBoost分类 基于牛顿-拉夫逊优化算法[24年最新算法]-XGBoost多特征分类预测+交叉验证

NRBO-XGBoost分类 基于牛顿-拉夫逊优化算法[24年最新算法]-XGBoost多特征分类预测交叉验证 多输入单输出) matlab代码 程序已调试好,无需更改代码替换数据直接使用!!!数据格式为excel格式!需要定制可私&a…...

synchronized实现原理及优化

一、概述 线程安全在并发编程中是重要关注点,造成线程安全问题的主要诱因有两个:一是存在共享数据(也称临界资源),二是存在多个线程共同操作共享数据。synchronized关键字能够保证在同一时刻只有一个线程可以执行某个…...

NLP 之词的表示与语言模型

表示的基本原理: 机器无法理解文字,却能进行复杂的数学运算——神经网络只要够深、够复杂,就能拟合足够复杂的数学模式。把文字嵌入(embed)到一个向量空间中去。 词表示(Word Representation)…...

每天一个数据分析题(四百七十一)- 假设检验

下列对假设检验的描述合理的是? A. 备择假设是研究者想收集证据予以支持的假设 B. 原假设是研究者想收集证据予以推翻的假设 C. 原假设是研究者想收集证据予以支持的假设 D. 备择假设是研究者想收集证据予以推翻的假设 数据分析认证考试介绍:点击进入 题目来…...

《系统架构设计师教程(第2版)》第13章-层次式架构设计理论与实践-04-数据访问层设计

文章目录 1. 五种数据访问模式1.1 在线访问1.2 DAO1.3 DTO1.4 离线数据模式1.5 对象/关系映射 (O/R Mapping) 2. 工厂方法模式在数据访问层应用3 ORM、Hibernate与CMP2.0设计思想3.1 ORM3.2 Hibernate1)概述2) Hibernate的架构(2023年的考题&…...

【视觉SLAM】 十四讲ch7习题

简介 本文主要内容是《视觉SLAM十四讲》(第二版)第7章的习题解答,并介绍了在解答习题中的一下思考和总结的经验。本文代码部分参考了:HW-of-SLAMBOOK2 1、除了本书介绍的ORB特征点,你还能找到哪些特征点?…...

K-近邻算法(二)

三、 kd 树 问题导⼊: 实现k 近邻算法时, 主要考虑的问题是如何对训练数据进⾏快速 k 近邻搜索。这在特征空间的维数⼤及训练数据容量⼤时尤其必要。 k 近邻法最简单的实现是线性扫描(穷举搜索),即要计算输⼊实例与…...

WPF学习(2)-UniformGrid控件(均分布局)+StackPanel控件(栈式布局)

UniformGrid控件(均分布局) UniformGrid和Grid有些相似,只不过UniformGrid的每个单元格面积都是相等的,不管是横向的单元格,或是纵向的单元格,它们会平分整个UniformGrid。 UniformGrid控件提供了3个属性…...

ANTSDR E310

ANTSDR E310是一款由微相科技有限公司(MicroPhase)推出的软件无线电(SDR)平台,专为现场部署设计。以下是对ANTSDR E310的详细介绍: 一、主要特点 独立运行的软件无线电:ANTSDR E310具备独立运…...

MySQL 5.7 DDL 与 GH-OST 对比分析

作者:来自 vivo 互联网存储研发团队- Xia Qianyong 本文首先介绍MySQL 5.7 DDL以及GH-OST的原理,然后从效率、空间占用、锁阻塞、binlog日志产生量、主备延时等方面,对比GH-OST和MySQL5.7 DDL的差异。 一、背景介绍 在 MySQL 数据库中&…...

【Python】爬取网易新闻今日热点列表数据并导出

1. 需求 从网易新闻的科技模块爬取今日热点的列表数据,其中包括标题、图片、标签、发表时间、路径、详细文本内容,最后导出这些列表数据到Excel中。 网易科技新闻网址:https://tech.163.com 2. 解决步骤 2.1 前期准备 爬虫脚本中需要引用…...

软件设计之HTML5

软件设计之HTML5 【狂神说Java】HTML5完整教学通俗易懂 学习内容: 软件开发技能点参照:软件开发,小白变大佬,这套学习路线让你少走弯路是认真的,欢迎讨论 软件开发技能点参照:Java学习完整路线&#xff…...

CnosDB 元数据集群 – 分布式时序数据库的大脑

CnosDB 是一个分布式时序数据库系统,其中元数据集群是核心组件之一,负责管理整个集群的元数据信息。 1. 概述 CnosDB 是一个分布式时序数据库系统,其中元数据集群是核心组件之一,负责管理整个集群的元数据信息。元数据包括数据库…...

白骑士的Matlab教学进阶篇 2.5 Simulink

Simulink是MATLAB的扩展工具,提供了一个图形化的建模和仿真环境。它广泛应用于系统设计、仿真、自动控制、信号处理等领域。本文将详细介绍Simulink的简介与基本使用、建立与仿真模型、控制系统设计与仿真、与MATLAB的集成。 Simulink简介与基本使用 什么是Simuli…...

linux安装anaconda

参考 如何在Linux服务器上安装Anaconda(超详细)_linux安装anconda-CSDN博客 官网 Index of / 安装网站 https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh wget https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Lin…...

python装饰器作用和使用场景

当谈到装饰器时,很多初学者很迷糊,有一个经典的例子可以帮助理解它们的作用。装饰器允许你在不修改函数代码的情况下,动态地改变函数的行为。 一、用法 假设我们有一个简单的函数,用来输出一条简单的问候语: 复制代码…...

Apache Tomcat 7下载、安装、环境变量配置 详细教程

Apache Tomcat 7下载、安装、环境变量配置 详细教程 Apache Tomcat 7下载Apache Tomcat 7 安装Apache Tomcat 7 环境变量配置启动 Apache Tomcat 7测试Tomcat7是否启动成功 Apache Tomcat 7下载 1、下载地址,找到Archives 链接: 官网下载地址 2、找到Tomcat 7&…...

SQL注入实例(sqli-labs/less-20)

0、初始页面 1、确定闭合字符 2、爆库名 3、爆表名 4、爆列名 5、查询最终目标...

OpenClaw监控告警方案:Qwen3-14B驱动服务器异常检测

OpenClaw监控告警方案:Qwen3-14B驱动服务器异常检测 1. 为什么需要智能化的服务器监控 作为个人站长,我经历过太多次深夜被服务器宕机惊醒的噩梦。传统监控工具要么配置复杂(比如PrometheusGrafana全家桶),要么告警方…...

ABAP事务控制深度指南:如何避免COMMIT WORK导致的BW数据丢失问题

ABAP事务控制深度指南:如何避免COMMIT WORK导致的BW数据丢失问题 在SAP BW项目实施过程中,数据完整性是每个ABAP开发者的核心关切。我曾亲眼目睹一个关键财务月结报表因为异步提交导致数据缺失,最终引发连锁反应——财务团队不得不通宵重新跑…...

OpenClaw开源贡献:为Qwen3.5-9B编写自定义技能指南

OpenClaw开源贡献:为Qwen3.5-9B编写自定义技能指南 1. 为什么要为OpenClaw开发自定义技能 去年冬天,当我第一次尝试用OpenClaw自动整理电脑上堆积如山的会议录音时,发现现有的技能库无法满足我的个性化需求。这促使我深入研究如何为这个开源…...

Fix-Kindle-Ebook-Cover彻底解决Kindle电子书封面丢失问题:从根源修复到长效管理

Fix-Kindle-Ebook-Cover彻底解决Kindle电子书封面丢失问题:从根源修复到长效管理 【免费下载链接】Fix-Kindle-Ebook-Cover A tool to fix damaged cover of Kindle ebook. 项目地址: https://gitcode.com/gh_mirrors/fi/Fix-Kindle-Ebook-Cover Kindle电子书…...

Cogito-v1-preview-llama-3B企业应用:中小开发者低成本接入混合推理AI方案

Cogito-v1-preview-llama-3B企业应用:中小开发者低成本接入混合推理AI方案 1. 引言:当小团队也想用上“会思考”的AI 如果你是一个中小型开发团队的负责人,或者是一个独立开发者,最近可能经常听到这样的讨论:“某某大…...

OpenClaw故障诊断:Qwen3.5-9B接口超时问题排查实录

OpenClaw故障诊断:Qwen3.5-9B接口超时问题排查实录 1. 问题现象与初步判断 那天深夜,我正在调试一个自动化文档处理流程,OpenClaw突然开始频繁报错。控制台不断弹出"Model timeout after 30000ms"的警告,原本10秒内能…...

告别抓瞎!手把手教你用Wireshark解密TLS 1.3流量(附SSLKEYLOGFILE环境变量配置)

从密文到明文:实战解密TLS 1.3流量的完整指南 当你在调试一个API接口时,发现请求总是返回异常状态码,但查看Wireshark抓包却只能看到一堆加密的TLS 1.3数据包,这种"睁眼瞎"的感觉确实令人沮丧。TLS 1.3作为目前最安全的…...

测试小白福音:在快马上通过实战代码轻松攻克软件测试面试题

作为一名刚入门的软件测试新手,面对各种面试题时常常感到一头雾水。最近我发现了一个特别实用的学习方法 - 通过动手实践来理解测试理论。今天就来分享一下我的经验。 从基础概念入手 刚开始学习时,我连黑盒测试和白盒测试的区别都搞不清楚。后来发现&…...

Flutter鸿蒙应用集成图片加载与缓存功能

🔥Flutter鸿蒙应用集成图片加载与缓存功能(macOSDevEco Studio) 欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net📄 文章摘要 本文为Flutter for OpenHarmony 跨平台应用开发系列实战文章&…...

Vibe Coding 工具实战案例全解:Cursor、Claude Code、Codex 真实项目 30 分钟到 4 小时快速构建指南(2026 年最新)

Vibe Coding 工具实战案例(2026 年最新)以下是 3 个真实可复现的 Vibe Coding 实战案例,覆盖主流工具(Cursor、Claude Code、OpenAI Codex),从简单入门到中大型项目。每个案例都包含: 项目场景 核心 Prompt 示例 完整操作流程 实际效果 + 耗时 关键技巧(避坑) 这些案例…...