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

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

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(): 列出目录下所有文件名

LeRobot SO-ARM100 学习笔记(2) diffusion module 对 lerobot 中的 diffusion policy 进行基本的代码阅读 阅读详情

相关推荐

一步一步实现基于COMSOL的单模光纤波导仿真

一步一步实现基于COMSOL的单模光纤波导仿真,简单易懂,跟着博客就能实现

君莫笑lucky的博客 1万+

《Java核心技术卷Ⅰ(原书12版)》第十二章并发

《Java核心技术卷Ⅰ(原书12版)》第十二章并发个人笔记,记录了较为其中较为常用的API和知识点

Wwhds的博客 1641

Arcgis模型构建器01——写一个简单的模型

在使用模型构建器解决这个需求之前,我们要想清楚如果我们手动解决的话,应该如何去处理,因为构建模型的过程正是基于我们手动处理的过程来构建的。我有一个全国的dem影像数据和一个陕西省边界范围矢量,现在我想获取陕西省的dem影像的坡度数据。填写完之后点击确定,我们发现,两个输入数据和工具连接起来了,并且通过裁剪工具得到一个中间结果,即。我们发现工具框和中间数据框都存在阴影,说明已经运行过了这个模型,不报错就说明模型运行成功!现在我们就把数据和工具都串联起来了,成功构建好了模型。

爱吃雪糕的小布丁的博客 918

作业12-流与文件

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

weixin_30938149的博客 120

揭秘AI人工智能中Stable Diffusion的模型微调技巧

Stable Diffusion作为一种强大的文本到图像生成模型,在艺术创作、设计、娱乐等多个领域展现出了巨大的应用潜力。然而,其默认的模型输出可能无法满足特定用户或特定场景的个性化需求。本文章的目的在于深入揭秘Stable Diffusion的模型微调技巧,让读者能够根据自己的需求对模型进行定制化调整,生成符合特定风格、主题或要求的图像。范围涵盖了从基础概念到实际操作,从理论原理到项目实战的全方位内容,旨在为读者提供一个系统且深入的学习指南。

大模型应用工坊 948

SAP_SD模块销售利润中心替代简介

SAP SD模块跨公司销售利润中心替代简介 在SAP SD模块中,系统自动生成的财务凭证需要正确反映利润中心归属。当默认利润中心取值不符合业务逻辑时(如跨公司销售、多组织共用工厂等情况),需配置利润中心替代功能。该功能通过事务码0KEM定义替代规则,可根据物料、客户等条件自动替换利润中心字段。系统配置包括创建替代规则、定义先决条件、设置用户出口程序等步骤。对于复杂业务场景,还可通过用户出口或BADI增强实现。利润中心替代能确保销售收入与成本正确核算,避免利润分配错误,满足企业多维度利润分析需求。

我小时候很黑的博客 434

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

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

tiewen的专栏 786

C# MVVM的“核武器”:CommunityToolkit.Mvvm的RelayCommand实战全解

你默默打开VS:“该用RelayCommand的‘量子纠缠’魔法了!用户点击按钮无响应,调试器显示命令未绑定,但代码看起来完美无缺。“我的MVVM应用?那可是能穿越线程的命令量子计算机!异步操作阻塞了UI线程,用户界面变成“加载中”死循环。:UI与业务逻辑通过命令“量子隧道”解耦。:所有长时间操作自动进入“量子跃迁”模式。:携带任意上下文的“量子信封”传递。:命令可用性随数据变化实时同步。

java专栏 663

java基础知识复习笔记

最近在学习echo3源码时忽然发现自己对java的很多基础知识还是没有掌握,很多语法从前根本就没想过还可以这么用的!比如echo3对内部类、内部接口、静态构造、对象组合等出神入化的应用,直叫人叹为观止呀。有感于自己基础之薄弱,重新拾起《java核心技术,卷一》一书,复习一下一些重要语法知识及某些以前不太在意的基础语法。特作如下笔记。 一、接口 1、主要用来描述类具有什么功能,而并不给出这些功能的具...

hlxiong的专栏 126

(付费请教,防遗忘记录)为什么EDEM bondV1 V2添加后还是没有胶结?????

最近用到了EDEM的胶结功能,在添加了bond V1和V2后,我发现无论颗粒半径设置为多少,接触半径设置为多少,胶结键的参数设置为多少,bond generated数量均为0!!!在后处理中bond中的力也通通为0!!我跟我的同门百思不得其解!!!!最终付费请教了一个大牛,解决了这个问题!!!!答案在文末

zheaa的博客 3101

【Power Compiler手册】13.UPF多电压设计实现(2)

在这个场景中,在约束传播期间,工具会比较BLOCK中的原子电源域与TOP设计中的原子电源域,并且确认所有属性都匹配。因此,域合并成功,工具会丢弃来自BLOCK的域。在这个场景中,在约束传播期间,工具会比较BLOCK中的原子电源域与TOP设计中的非原子电源域,发现电源域不匹配。在这个场景中,在约束传播期间,工具会比较BLOCK中的非原子电源域与TOP设计中的原子电源域,发现电源域不匹配。在这个场景中,在约束传播期间,工具会比较BLOCK中的原子电源域与TOP设计中的原子电源域,发现它们的一些属性不匹配。

QRBQ 750

Java中的IO流,入门

在保存数据时,可以选择二进制格式或文本格式。 例如:整数1234存储成二进制数时,它被写为由字节 00 00 04 D2构成的序列,(十六进制表示法),而存储成文本格式,它被存为了字符串“1234”。 虽然,二进制格式的 I/O 告诉且高效,但是不宜人来阅读! 关于文本格式的 I/O 流,我们需要考虑 字符编码(character encoding),UTF-16编码方式,字符串“123

酒足饭饱勾二嫂,天真无邪假三叔 567

【SWAT】SWAT中预定义河网及流域

平原圩区没有明显的海拔差异。DEM中包含的地形信息无法定义河段的位置和水文连接,SWAT模型Watershed Delineator中提供两种方法,帮助用户输入流域拓扑信息。第一种方法,“Burn-in”和手动绘制河段和子流域边界。首先,使用“Burn-in”功能导入数字河道网络(DCN),并根据DEM和DCN绘制河流和子流域。然后在ArcGIS中编辑“流域”和“河段”层,可以调整位置、范围和水文连接。第二种方法,可以手动绘制或重新编辑河流和子流域,预定义河网及流域。

```On Earth, Be Water, By Coding``` 3273

2025/03/23 ​《Java核心技术·卷I(原书第11版)》Java核心技术·卷II(原书第11版):高级特性》凯·S.霍斯特曼(Cay S. Horstmann)书籍阅读

2025/03/23 ​《Java核心技术·卷I(原书第11版)》Java核心技术·卷II(原书第11版):高级特性》凯·S.霍斯特曼(Cay S. Horstmann)书籍阅读

weixin_45428910的博客 1549

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java核心技术·卷I(原书第12版)

他是《Java核心技术》两卷本的作者,也是《重要的,第二版》(Addison-Wesley,2018)的Core Java SE 9和《重要的,第二版》(Addison-Wesley,2017)的作者。读者应在充分理解Java语言和Java类库的基础上,灵活应用Java提供的高级特性,包括面向对象编程、反射和代理、接口和内部类、异常处理、泛型编程、集合框架、事件监听器模型、图形用户界面设计和并发。☉第四章介绍了面向对象的两大基石——封装的重要概念,以及Java语言实现封装的机制——类和方法;

jascl的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

《Java核心技术 卷I 基础知识(原书第10版)》:Java编程的必备宝典

《Java核心技术 卷I 基础知识(原书第10版)》:Java编程的必备宝典 【下载地址】Java核心技术原书第10版中文版下载 Java核心技术原书第10版中文版下载 项目地址: https://gitcode.com/open...

gitblog_09750的博客 767

Java编程的终极导航:《Java核心技术》系列全面解读

在编程世界中,Java的位置无可替代,无论是企业级应用、移动应用开发,还是大数据处理,Java都扮演着重要的角色。对于刚刚踏入这个领域的新手来说,有一条清晰的路线图是非常必要的;而对于经验丰富的开发者而言,及时更新知识库、了解新技术同样重要。这时,`《Java核心技术 卷I:开发基础(原书第12版)》`与`《Java核心技术 卷II:高级特性(原书第12版)》`便是你的灯塔,为你的Java学习之旅指引方向

hacker707的博客 2万+

《Java核心技术卷Ⅱ(原书12版)》第一章流

《Java核心技术卷Ⅱ(原书12版)》第一章流重点内容,高效的流式处理是每个Java程序员都该会的技能,本文介绍了《Core Java》中流的相关知识。

Wwhds的博客 1898

【社区图书馆】读《Java核心技术 卷I》有感

近期二刷了《Java核心技术 卷I》,于是写个二刷读后感分享给入门Java的小伙伴,辅助学习。

**My Coding Family** 1056

《Java核心技术(原书第10版) 卷Ⅰ》阅读心得与总结

放假前打算花利用假期时间阅读一下《Java核心技术 卷Ⅰ》(以下简称“卷Ⅰ”),终于花了一个月的时间粗细兼并地读完了这本书。今天抽点儿时间写个博客,总结一下阅读成果好了。 这本书给人最大的感受是知识讲得很专业,比本科教材内容充实几倍,豆瓣目前评分7.6,褒贬不一。先说说缺点吧,个人认为阅读体验并不是很好。主要体现在: 基础知识部分介绍很详细,几乎无死角,内容跟得上时代,但正因为这样,有些地方实在难以理解; 各章节间耦合性较低,知识没有问题,但逻辑安排似乎有点儿问题,不懂作者为何这样安排...

wenjingyu的专栏 856

JAVA简单小爬虫 & 《JAVA2核心技术卷1:基本知识(原书第7版)》源代码

简单爬虫 这段代码源自《JAVA2核心技术卷1:基本知识(原书第7版)》例12-10: import java.io.*; import java.net.*; import java.util.regex.*; public class HrefMatch { public } ...

一出好剧 196

《Java核心技术(原书第10版) 卷Ⅰ》个人心得与总结

2019.3.20《 Java核心技术(卷1)》 总结 《 Java核心技术(卷1)》 总结 拖了这么久,终于来了。我发现在学习上很多时候我真是拖延患者。一给自己安排的任务重,学习效率低下,二是计划总赶不上变化。 大概花了有2,3个月的时间吧,从1月份到3.5号,完整地看完了这本书,中间断断续续。整体看完后的几个感受吧。 基础知识讲得很细,很全面,但这样也导致了不太容易阅读,也会比较枯燥。所以我...

qq_38689900的博客 1060

【亲测免费】 Java核心技术 卷I + 卷II(第9版)(中文带目录) 下载仓库

Java核心技术 卷I + 卷II(第9版)(中文带目录) 下载仓库 【下载地址】Java核心技术卷I卷II第9版中文带目录下载仓库 Java核心技术 卷I + 卷II(第9版)(中文带目录) 下载仓库 项目地址: https:/...

gitblog_09719的博客 693

Java核心技术 卷I 基础知识(原书第10版)

Java核心技术 卷I 基础知识(原书第10版) 三、Java的基本程序设计结构(一) Java的基本程序设计结构主要介绍程序设计的基本概念(如数据类型、分支以及循环)在Java中的实现方式。 一个简单的Java应用程序 public class FirstSample { public static void main(String[] args) { Syste...

weixin_46245747的博客 3615

【亲测免费】 Java核心技术原书第10版中文版下载

Java核心技术原书第10版中文版下载 【下载地址】Java核心技术原书第10版中文版下载 Java核心技术原书第10版中文版下载 项目地址: https://gitcode.com/open-source-toolkit/4a4...

gitblog_09712的博客 744

读《JAVA 核心技术》卷I 基础知识(原书第10版)

程序员写的技术 FAQ 和杂文 1566

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一导读

前  言 致读者本书是按照Java SE 8完全更新后的《Java核心技术 卷Ⅱ 高级特性(原书第10版)》。卷Ⅰ主要介绍了Java语言的一些关键特性;而本卷主要介绍编程人员进行专业软件开发时需要了解的高级主题。因此,与本书卷Ⅰ和之前的版本一样,我们仍将本书定位于用Java技术进行实际项目开发的编程人员。编写任何一本书籍都难免会有一些错误或不准确的地方...

weixin_34358092的博客 1526
上一篇: JAVA2核心技术卷I:基础知识(原书第7版) -- 第11章. 异常与调试
下一篇: JAVA2核心技术卷I:基础知识(原书第7版) -- 第13章. 泛型程序设计
overkill
博客等级 码龄25年 1粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值