`
qinweiping
  • 浏览: 133030 次
  • 性别: Icon_minigender_1
  • 来自: 嘉兴
社区版块
存档分类
最新评论

【New】Java学习小记(六)地址薄(二)

阅读更多

今天学习了一个地址薄程序调试了一个下午现在能运行起来了发现还是用的是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 transient关键字使用小记

    在Java编程语言中,`transient`关键字是一个非常重要的概念,它与对象的序列化过程紧密相关。序列化是将一个对象的状态转换为字节流,以便存储或在网络中传输。当一个类实现了`Serializable`接口,该类的对象就可以...

    用java调用C或C++动态链接库 java调用dll

    **第二步:编译Java类** 使用Java编译器(javac)编译Java类,生成.class文件。 **第三步:生成C/C++头文件** 使用`javah`工具,根据编译好的`.class`文件生成C/C++的头文件。例如: ``` javah -classpath ...

    xstream使用小记

    《Xstream使用小记》 Xstream是一款Java库,它提供了简单且强大的方式来序列化和反序列化Java对象到XML,以及从XML回转换为Java对象。在本文中,我们将深入探讨Xstream的核心概念、使用场景以及如何通过实例进行...

    EventBus之小记源码

    EventBus.getDefault().post(new MessageEvent()); ``` 发布事件时,EventBus 会自动找到所有订阅了相应事件类型的订阅者,并调用它们的订阅方法。 除了基本用法,EventBus 还支持一些高级特性,比如: - **事件...

    北大青鸟JAVA作业

    8. **IO和NIO**:JAVA的IO库提供了处理输入输出的方法,而NIO(New IO)引入了非阻塞I/O,提升了效率,适用于高并发场景。 9. **反射机制**:JAVA反射允许在运行时检查类的信息,创建和操作对象,对于理解和使用第...

Global site tag (gtag.js) - Google Analytics