备份 - JAVA2核心技术卷I -- 第12章. 流与文件

1. 读写操作

InputStream/OutputStream: 输入输出流,以字节为单位

Reader/Writer: 读写以双字节为单位

2. InputStream和OutputStream方法

2.1 int read(): 读取一个字节的数据并返回,读到流的结尾,返回-1

2.2 int read(byte[] b): 将数据读到一个字节数组中并返回读取的字节数目,到达末尾返回-1

2.3 int read(byte[] b, int off, int len): 读取的数据放在b的第off开始,len代表长度

2.4 int available(): 返回可用的未阻塞的字节数

int byteAvailable = in.available();

if (byteAvailable > 0) {

byte[] data = new byte[byteAvailable];

in.read(data);

}

2.5 void close(): 关闭输入流

2.6 void write(int n): 写入一个字节的数据

2.7 void write(byte[] b): 写入数组b的所有字节

2.8 void write(byte[] b, int off, int len): 写入数组b某一范围的数据

2.9 void close(): 刷新并关闭输出流

2.10 void flush(): 刷新输出流

3. JDK5.0加入4种新接口: Closeable、Flushable、Readable、Appendable

4. 介绍基本流的使用

4.1 FileInputStream和FileOutputStream能够和磁盘文件联系起来

FileInputStream fin = new FileInputStream("Employee.dat"); // 在当前目录下寻找文件

在windows格式的路径,应该使用“\\”作为路径分隔符

4.2 同样可以使用以下方法读取

File f = new File("employee.dat");

FileInputStream fin = new FileInputStream(f);

byte[] b = (byte) fin.read();

System.getProperty("user.dir"): 可以获取当前目录的属性

4.3 缓冲读取数据

DataInputStream din = new DataInputStream(new BufferedInputStream(newFileInputStream("employee.dat")));

一般使用DataInputStream来帮助读取ZipInputStream和FileInputStream中的数据

5. DataInput和DataOutput

5.1 readBoolean()、readByte()、String readLine(): 读取一行由\n \r \r\n或者EOF结尾的字符、String readUTF()

6. RandomAccessFile: 随机存取文件流能够在文件的任何位置查找或者写入数据

RandomAccessFile("employee.dat", "r/rw/rws"): 后面是读取模式

getFilePointer(): 获取指针位置

7. 文本流

使用编码读取文件 InputStreamReader in = new InputStreamReader(new FileInputStream("abc.dat"), "ISO8859_5");

String abc = new String(byte[] b); 方便把byte转换成String

8. 字符集Charset

Charset cset = Charset.forName("ISO-6659-1");

8.1 编码

String str = "abc";

ByteBuffer buffer = cset.encode(str);

byte[] bytes = buffer.array();

8.2 解码

byte[] bytes = "...";

ByteBuffer buffer = ByteBuffer.wrap(bytes); //返回给定的字节数组

CharBuffer cbuf = cset.decode(buffer);

String str = cbuf.toString();

9. 文本输出 - PrintWriter

PrintWriter: 文本格式写数据 DataOutputStream: 二进制格式写数据

PrintWriter = out new PrintWriter(new FileWriter("employee.dat")); 或者

PrintWriter = out new PrintWriter(new FileOutputStream("employee.dat"));

PrintWriter = out new PrintWriter(new FileWriter("employee.dat"), true); //自动刷新模式

10. 文本输入 - BufferedReader

BufferedReader in = new BufferedReader(new FileReader("Employee.txt"));

11. ZIP文件流

ZipInputStream zin = new ZipInputStream(new FileInputStream(zipname));

ZipEntry entry;

while ((entry = zin.getNextEntry()) != null) {

analyze entry;

read the contents of zin;

zin.closeEntry();

}

zin.close();

12. 分隔符 - StringTokenizer

用于读取字符串中的被分割后的字符

StringTokenizer tokenizer = new StringTokenizer(line, "|"); //字符串line用“|”被分割

while (tokenizer.hasMoreTokens()) {

String token = tokenizer.nextToken();

process token;

}

13. StringBuilder和StringBuffer

StringBuffer允许多线程进行操作,StringBuilder一个线程操作

append(String str/ char c): 追加字符串或者代码单元

insert(int offset, String str): 在offset位置插入一个字符串

delete(int startIndex, int endIndex): 删除从startIndex到endIndex-1的内容

toString(): 返回一个String

14. 对象序列化读写

读取的对象必须实现Serializable接口 class Employee implements Serializable

14.1 写入对象

ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("employee.dat"));

Employee harry = new Employee("Harry", 50000, 1989, 10, 1);

out.writeObject(harry);

14.2 读取对象

ObjectInputStream in = new ObjectInputStream(new FileInputStream("employee.dat"));

Employee e = (Employee) in.readObject();

15. ByteArrayOutputStream 存储数据到一个字节数组

ByteArrayOutputStream baos = new ByteArrayOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(baos, "UTF-8");

... //osw.writeObject(this);

byte[] reqBuffer = baos.toByteArray();

16. 文件管理

File f = new File("text.txt"); // 创建一个文件,使用test.txt

boolean delete(): 删除文件

boolean exists(): 文件是否存在

String getAbsolutePath(): 得到绝对路径

String getName(): 得到文件名

boolean isDirectory(): 是否为目录

boolean isFile(): 是否为文件

String[] list(): 列出目录下所有文件名

Minecraft Forge服务器搭建与自动化备份实战指南 在游戏服务器运维领域,Java虚拟机的性能调优和自动化脚本设计是保障服务稳定运行的核心技术。通过合理配置JVM参数,特别是针对G1垃圾收集器的优化,可以有效管理内存分配,减少垃圾回收导致的延迟卡顿,从而提升游戏刻(TPS)的稳定性。在工程实践中,结合批处理脚本和任务计划程序,可以实现关键数据的定时压缩与归档,这是数据备份容灾的基础手段。这些技术对于需要长期稳定运行的多人联机游戏环境,如Minecraft模组服务器,具有重要价值。本文以Forge服务端部署为例,详细讲解了从环境准备、启动参数调优到利用批处理脚 阅读详情

相关推荐

MySQL之备份数据库(MySQL Backup Database)

在MySQL中,备份数据库可以通过多种工具和方法实现。例如,使用mysqldump可以进行在线逻辑备份,而MySQL Enterprise Backup则可以执行热备份,优化以最小化开销并避免在备份InnoDB数据文件时造成干扰‌12。此外,Percona XtraBackup是一个开源的MySQL热备份软件,能够为InnoDB和XtraDB数据库执行非阻塞备份‌,本章详细介绍MySQL如何备份数据库。

Linux运维老纪的博客 1541

JAVA2核心技术卷I:基础知识(原书第7版) -- 第12章. 流与文件

1.  读写操作    InputStream/OutputStream: 输入输出流,以字节为单位    Reader/Writer: 读写以双字节为单位2. InputStream和OutputStream方法    2.1 int read(): 读取一个字节的数据并返回,读到流的结尾,返回-1    2.2 int read(byte[] b): 将数据读到一个字节数组

overkill的专栏 526

Commvault进化论:从备份软件到智能数据管理平台的实战解析

数据备份与恢复是保障企业业务连续性的基石,其核心原理在于通过创建数据的副本,确保在系统故障、人为误操作或勒索软件攻击时能够快速恢复。随着数据成为核心资产,传统备份方案的价值已不仅限于“灾备”,更延伸至数据治理、合规与智能运营。现代数据管理平台通过微服务架构、API优先设计及AI驱动的智能分析,实现了数据保护、移动、洞察与价值挖掘的一体化。这为应对云原生环境、海量非结构化数据及日益严峻的安全威胁提供了关键技术支撑。本文聚焦于行业领先的解决方案,深入探讨其如何通过本体驱动的AI数据管理、HyperScale一体

weixin_30706691的博客 328

作业12-流与文件

作业12-流与文件 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容。 2. 面向系统综合设计-图书馆管理系统或购物车 使用流与文件改造你的图书馆管理系统或购物车。 2.1 简述如何使用流与文件改造你的系统。文件中数据的格式如何? 把用户信息、图书信息保存在文件中 数据格式:书名 书的数量 2.2 简述系统中文件读写部分使用了流与文件相关的什么接口与类?为什...

weixin_30938149的博客 120

MySQL核心技术原理之:数据库备份与恢复

作者:禅与计算机程序设计艺术 1.背景介绍 数据库备份与恢复是数据管理中必不可少的一环。对于一个企业级的数据仓库、数据中心或者互联网公司,日常运维工作的重点就在于数据的完整性、可用性和安全性。如何保证数据库备份与恢复能够及时、准确地完成工作,对提高业务运行质量至关重要。当服务器宕机或者崩溃时,数据恢

AI天才研究院 260

OpManager与OpUtils 12.5.476双引擎协同运维实践

网络监控与配置管理是IT运维的两大基础能力,其核心在于实时状态感知与配置生命周期管控的有机统一。OpManager作为性能与拓扑监控中枢,依赖SNMP、WMI、CLI等多协议采集实现动态基线告警;OpUtils则聚焦配置备份、合规审计与变更追踪,通过CLI快照比对保障安全基线。二者在12.5.476版本中通过Device ID Registry和事件总线达成数据同源、状态同步,彻底解决传统方案中常见的设备纳管割裂、告警与配置脱节问题。该版本还强化国产化适配(鲲鹏/麒麟/达梦)、拓扑感知告警收敛及增量配置切片

weixin_33898233的博客 462

《C++语言程序设计(第4版)学生用书》课程学习(12)——第12章 异常处理

qq_34573534的博客 201

ManageEngine OpManager与OpUtils 12.5.476:一体化网络运维平台部署与实战

网络性能监控(NPM)与IP地址管理(IPAM)是现代企业网络运维的两大基石。NPM通过SNMP、NetFlow等协议实时采集设备性能指标,实现故障预警与性能洞察;IPAM则系统化管理IP资源,解决地址冲突与资源混乱问题。二者结合,能构建从底层资源到上层性能的完整运维视图,实现从“故障响应”到“主动预防”的转变,极大提升运维效率与网络可靠性。在实际场景中,如ManageEngine OpManager与OpUtils这类组合方案,通过深度集成,能将性能告警与具体的IP、端口、终端设备快速关联,实现分钟级根因

weixin_33816946的博客 445

Java核心技术卷I:基础知识(原书第8版):12.2 简单泛型类的定义

铁文整理 12.2 简单泛型类的定义     一个泛型类就是具有一个或多个类型变量的类。本章使用一个简单的Pair类作为例子。对于这个类来说,我们只关注泛型,而不会为数据存储的细节烦恼。下面是Pair类的代码: public class Pair {     public Pair() {         first = null;         second = n

tiewen的专栏 786

C++流类体系与文件操作

通过本章学习,应理解I/O流、流类与流类体系的概念,掌握流的输入/输出控制格式。了解C++有关文件的概念及文件的使用方法,理解文件流类体系结构,掌握实现文件操作的成员函数的使用方法,学会文本文件的打开、读/写、关闭等操作的编程方法。

VBA常见错误 - “错误3706,未找到提供程序,该程序可能未正确安装”解决方法

1、问题描述 在利用VBA编程时,引用其它表格数据,出现以下问题: (1)运行“错误3706,未找到提供程序,该程序可能未正确安装”。 (2)引用数据失败 2、解决方法 下载“Access 2010 数据库引擎”,并安装即可。 https://www.microsoft.com/en-us/download/details.aspx?id=54920 AccessDatabaseEngine 2010 官方安装包,官网下载不了的可以来这里下载。(1)运行“错误3706,未找到提..

Nemuel的博客 3万+

【Python系列】文件操作

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨。

优快云站内信: https://i.youkuaiyun.com/#/msg/chat/qyj19920704 3万+

智能车竞赛必备:STC32G144K开源库实战指南(含总钻风摄像头配置)

本文为智能车竞赛参赛者提供了一份基于STC32G144K微控制器与逐飞开源库的实战开发指南。文章详细介绍了从开发环境搭建、总钻风摄像头驱动配置与图像采集优化,到核心控制算法实现与多任务调度等关键步骤,旨在帮助队伍快速构建稳定高效的视觉处理系统,提升竞赛竞争力。

weixin_29191081的博客 709

狂命爆肝99天,共52K字的JAVA学习笔记奉上,JAVA从入门到精通一文搞定,一文在手JAVA无忧

本文介绍了Java编程的基础知识、开发环境设置、JVM内存划分以及常用关键字。Java分为JavaSE、JavaEE和JavaME三个版本,分别用于桌面、企业和嵌入式系统开发。编译使用javac,运行使用java,JDK是开发工具包,JRE是运行环境,JVM是虚拟机。JVM内存分为堆、方法区和栈,分别存储实例变量、静态变量和局部变量。常用关键字包括public、static、final、this和super,分别用于定义类、静态成员、常量、当前对象引用和父类特征。开发环境IDEA的快捷键和组织方式也进行了总

渣渣盟的博客 4万+

STM32实战——七段数码管动态扫描技术详解

本文详细解析了STM32控制七段数码管的动态扫描技术,包括硬件连接、CubeMX配置及编程实现。通过分时复用原理和优化代码逻辑,实现稳定显示效果,并解决亮度不均、闪烁等常见问题。适合嵌入式开发者快速掌握STM32数码管驱动技术。

weixin_42561143的博客 279

Logisim实战:手把手教你搭建GB2312汉字字库(附完整电路图)

本文提供了一份详尽的Logisim实战指南,手把手教你如何利用存储芯片,通过位扩展和字扩展技术,构建一个完整的GB2312汉字字库。文章深入浅出地讲解了从编码原理、系统架构设计到具体电路实现与调试的全过程,是学习计算机组成原理和数字电路设计的绝佳实践项目。

k6l7m8n9的博客 808

android日志管理最佳策略,深入Android应用开发:核心技术解析与最佳实践

资源名称:深入Android应用开发:核心技术解析与最佳实践内容简介:如何才能真正进阶为Android应用开发高手?必须深入理解Android核心技术的底层原理和在开发中总结并使用各种最佳实践,别无他法!本书以Android的源代码为主,SDK为辅,针对应用开发者的需求,对各种核心技术的使用方法、底层原理和实现细节进行了深入而详细的讲解,同时辅之以大量案例和最佳实践,为开发者的进阶修炼和开发高质量...

weixin_39962356的博客 245

★教程1:matlab学习教程入门100例目录

★基础入门 1.为什么要学习MATLAB 2.MATLAB安装 持续更新....... ★MATLAB基础编程语言熟悉

FPGA/MATLAB学习教程/源码/项目合作开发 4万+

MongoDB核心技术深度解析题

本文深入解析MongoDB的核心技术与实现原理,涵盖数据模型、存储引擎、索引优化、集群架构等关键内容。主要内容包括:MongoDB的BSON数据格式与ObjectId结构,WiredTiger存储引擎工作机制,索引原理与查询优化策略,复制集与分片集群的高可用架构设计,多文档事务实现机制,以及Java集成与生产环境优化建议。文章通过对比分析、架构图解和代码示例,系统阐述了MongoDB作为文档型数据库的核心优势与适用场景,为开发者提供全面的技术参考和实践指导。

lhrimperial的专栏 1160

华为OD机试新系统真题 【简单表达式计算】

华为OD机试 新系统真题【简单表达式计算】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【简单表达式计算】题解

qq_45776114的博客 675

Unreal5从入门到精通之如何实现移动端触屏滑动手势

随着移动设备的普及,越来越多的游戏和应用选择在移动平台上发布。Unreal Engine 5(UE5)作为一款强大的游戏引擎,提供了丰富的工具和功能,帮助开发者打造出色的移动体验。UE5不仅提升了图形质量,还大幅简化了开发流程,使得开发者能够更专注于游戏设计和用户体验。在移动游戏中,触屏滑动手势是用户与应用互动的主要方式之一。然而,许多开发者在实现这些功能时常常遇到困难。为了填补这一知识空白,本篇文章将详细介绍如何在UE5中实现移动端触屏滑动手势,帮助你从入门到精通,提升你的开发技能。

TxNet 1136

3步高效排查法:PCL2启动器Java环境问题的终极诊断方案

Plain Craft Launcher 2(PCL2)作为广受欢迎的Minecraft启动器,其Java环境管理直接影响游戏启动稳定性。当遇到"NoClassDefFoundError"或Forge安装卡顿时,大多数用户往往陷入无休止的试错循环。本文将为你揭示一套系统化的3步诊断方案,彻底解决Java环境冲突问题。 ## 从混乱到有序:理解PCL2的Java检测逻辑 PCL2启动器内置了智能

gitblog_00544的博客 304

雷达参数的设置

采样率又可以叫做采样速率或者,顾名思义就是每秒采集的次数。该值越高,单位时间内对信号的采集越多,采样率的单位可以用Hz或者sps表示(sps是采样率,是每秒采样点的数量,sp表示采样点数),一般1sps=1Hz。采样时间是采样点数和采样周期的乘积得到的结果。假设实际采样率为4560ksps,采样点数为256,那么采样周期为1/4560(ms),那么ADC的采样时间就为256*(1/4560)(ms)=0.056ms=56微秒。

qq_50974341的博客 1912

SMARC与i.MX8X的嵌入式Linux开发实战:从选型到量产

嵌入式系统开发中,选择合适的计算机模块标准与处理器平台是项目成功的关键。SMARC作为面向低功耗、无风扇场景的模块化标准,凭借紧凑尺寸、丰富接口和灵活散热设计,在工业边缘计算、HMI、医疗设备等领域广泛应用。NXP i.MX8X系列采用异构架构,结合Cortex-A35应用核心与Cortex-M4F实时核心,能够同时满足Linux系统运行和实时控制需求。在Linux适配过程中,Yocto与设备树(Device Tree)是定制BSP的核心环节,通过裁剪内核、配置外设与启动流程,可实现稳定高效的嵌入式系统。本

weixin_33933118的博客 455

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Ubuntu 14.04 部署 OrientDB 2.2.37 实战指南

多模型数据库是指同时支持图、文档、键值和对象四种数据范式的统一存储系统,其核心在于共享存储引擎与跨模型查询能力。OrientDB 作为典型代表,通过二进制协议与嵌入式模式实现低延迟与轻量部署,特别适合资源受限的遗留环境。在 Ubuntu 14.04 这类长期支持但组件陈旧的系统中,版本兼容性(如 Java 8u202、OpenSSL 1.0.1f)和内核级调优(如 vm.max_map_count、ext4 data=writeback)构成部署成败的关键技术门槛。本文聚焦真实工业场景——物联网边缘节点、电

weixin_34109408的博客 385

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

oracle concepts中文,Oracle Concepts 中英文对照版 (10g R2)

Part I What Is Oracle? 第一部分 何为 Oracle?Chapter 1, Introduction to the Oracle Database第 1 章,Oracle 数据库简介Part II Oracle Database Architecture 第二部分 Oracle 数据库体系结构Chapter 2, Data Blocks, Extents, and Segme...

weixin_35914724的博客 355

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: Thinking in UML
book_overkill
博客等级 码龄20年 1粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值