今天学习了一个地址薄程序调试了一个下午现在能运行起来了发现还是用的是Eclipse自动修复功能修复代码建议不要用这样可以锻炼锻炼自己的能力。有什么不对的地方欢迎大家给我回复,我会努力改进的。下面就给大家讲解一下:
我们用RandomAccessFile创建一个存储和查看地址薄的程序至于这个程序怎么编写的请看我的上一篇博客文章。(篇幅有限)按钮Add在文件储存一个新的地址,按钮First,Next,Previous,Last分别从文件中读出第一,下一个,前一个,和最后一个地址。用文件address.dat来储存地址,使用下列语句创建一个可以读写的RandomAccessFile对象:
RandomAccessFile raf=new RandomAccessFile("address.dat","rw");每一个地址由name(32个字符),街道(32字符)城市city(20个字符),state(2字符)和邮编zip(5字符)如果域的实际长度小于固定最大长度,余下的部分用字符空格来填充。如果域实际的长度大于固定的最大长度,则截短实际串。所以,地址总长度为32+32+20+2+5=91个字符,每个字符占两个字节,因此,整个地址占2*91=182个字节,文件指针向前移动了182个字节。代码如下:
import java.io.*;
public class FixedLengthStringIO {
/** Read fixed number of characters from a DataInput stream */
public static String readFixedLengthString(int size,
DataInput in) throws IOException {
// Declare an array of characters
char[] chars = new char[size];
// Read fixed number of characters to the array
for (int i = 0; i < size; i++)
chars[i] = in.readChar();
return new String(chars);
}
/** Write fixed number of characters to a DataOutput stream */
public static void writeFixedLengthString(String s, int size,
DataOutput out) throws IOException {
char[] chars = new char[size];
// Fill in string with characters
s.getChars(0, Math.min(s.length(), size), chars, 0);
// Fill in blank characters in the rest of the array
for (int i = Math.min(s.length(), size); i < chars.length; i++)
chars[i] = ' ';
// Create and write a new string padded with blank characters
out.writeChars(new String(chars));
}
}
WriteFixedLengthString(String s, int Size,DataOutput out方法将一个固定大小的字符串写到输输流DataOutput中。当字符串的长度大于指定的长度的时候 它被截断,如果它小于指定长度的,用空格字符填补,不管哪种情况,都将一个固定长度的新字符串写入指定的输出流。由于RandomAccessFile实现了DataOutput out接口,所以,该方法可以将字符串写入RandomAccessFile流。例如,调用writeFixedLengthString("John",2,raf)方法,因为指定长度的参数size为2,所以实际写到RandomAccessFile对象raf中的字符串是"Jo"调用writeFixedLengthString("John",6,raf)方法,因为指定大小是6,实际将字符串"John"写入raf中
readFixedLengthString(int size InputOutput in)方法从InputStream中读取固定数目的字符,并将它们以字符串的形式返回 RondomAccessFile实现InputOutput,该方法可以用于从writeFixedLengthString(String s, int size, DataOutput out)中读取字符串。
分享到:
相关推荐
这份"java小记.rar"压缩包很可能包含了作者多年从事Java Web开发的经验总结,可能包括代码示例、笔记、最佳实践等内容。 在Java Web开发中,Servlet是核心部分,它是一个Java类,用于扩展服务器的功能,处理HTTP...
GeoStudio学习小记
在Java编程语言中,`transient`关键字是一个非常重要的概念,它与对象的序列化过程紧密相关。序列化是将一个对象的状态转换为字节流,以便存储或在网络中传输。当一个类实现了`Serializable`接口,该类的对象就可以...
本章节将重点围绕104规约的学习小记,包括固定长度报文的基本结构、常见帧的类型、报文示例及总召唤命令等几个方面进行详细解析。 #### 二、固定长度报文 固定长度报文是104规约中的一种基本报文形式,其结构相对...
### D3.js 学习小记 #### SVG基础与D3.js绘图实践 ##### SVG基础 SVG(可缩放矢量图形)是一种基于XML的矢量图像格式,用于描述二维图形以及图形应用。SVG 图像可以被放大、缩小而不会失真,非常适合于网页制作。...
时间和日期中常用到的几个类: java.util.Date, java.util.Calendar, java.util.GregorainCalendar, java.text.DateFormat, java.text.SimpleDateFormat
《VC学习小记》 学习Visual C++,也就是VC,是一项技术性强且深入的工程,尤其对于初学者来说,需要有良好的C/C++基础作为支撑。C++的基础知识包括语法、面向对象编程概念以及模板等高级特性,这些都是使用MFC...
【LocalCache 学习小记1】 LocalCache 是一种本地高速缓存机制,它主要用于提升数据获取速度,尤其是在处理大量数据时,可以有效避免频繁访问远程数据库或分布式缓存,如 Redis 中的热键问题。LocalCache 不是...
Redis是一款高性能的键值存储系统,常用于缓存和数据库应用。本文主要探讨Redis的安全问题,包括连接方式、数据加密、认证机制、数据备份以及主从复制等方面。 首先,Redis的默认配置可能存在安全风险,例如它允许...
猿人学第二届第一题解题小记
标题 "SQL学习小记" 暗示了这篇博客文章主要关注的是SQL语言的学习和实践。SQL(Structured Query Language)是用于管理和处理关系数据库的标准编程语言。以下是对这个主题的详细探讨: SQL基础: 1. 数据类型:SQL...
互联网二十五岁小记.pdf
在本项目中,我们将探索如何利用Linux操作系统,Java编程语言,Python3,NumPy库以及STL文件格式来实现3D打印技术。这是一个跨学科的综合应用,涉及到计算机科学、软件开发以及制造技术。 首先,Linux是开源的操作...
百度paddle课程学习小记(上)百度paddle课程学习小记(上)Day-1:python基础练习Day-2:《青春有你2》选手信息爬取遇到的问题Day-3《青春有你2》选手数据分析遇到的问题未完待续 百度paddle课程学习小记(上) 第...
单元测试学习小记软件测试什么是单元测试单元在程序里可以简单的理解为一个模块,一个方法。单元测试也就是在完成每个模块后都进行的测试。从确保每个模块没有问题,从而提高整体的程序质量。做单元测试的好处对于...
在“android开发小记”这个主题中,我们可以深入探讨Android应用程序开发的相关知识,特别是通过查看提供的压缩文件中的代码示例。这些文件名如lesson_8_code.zip至lesson_20_codel.zip,以及不同的Mp3Player版本,...
它对二层头部完全透明,允许AC对无线网络进行精细化控制,比如信道管理、功率控制和QoS策略。此外,CAPWAP还提供了无线绑定(Wireless BINDING)协议,用于无线客户端的关联和漫游管理,确保用户在移动过程中可以...
《Xstream使用小记》 Xstream是一款Java库,它提供了简单且强大的方式来序列化和反序列化Java对象到XML,以及从XML回转换为Java对象。在本文中,我们将深入探讨Xstream的核心概念、使用场景以及如何通过实例进行...
这篇文章是关于一种名为“咬人草”的植物的描述和作者对其独特特性的体验与思考。咬人草在新疆地区生长,是一种看似普通的草本植物,却有着不寻常的防御机制——它的叶瓣上有尖锐的小刺,一旦触碰,就会像被毒蜂蜇...