CIS 35A: Introduction to Java Programming

Home | Green Sheet | Lectures | Assignments | FAQ | Grades

Files

Text and Binary Files
Random-access files
Fixed-length strings

Random access files are often used to process files of records. For convenience, fixed-length records are used in random access files so that a record can be located easily. A record consists of a fixed number of fields. A field can be a string or a primitive data type. A string in a fixed-length record has a maximum size. If a string is smaller than the maximum size, the rest of the string is padded with blanks.

How to read and write fixed-length strings

  • When you write strings to a random-access file, you need to write fixed-length strings.
  • That way, the length of the strings won't vary from one record to another, and all of the record lengths in the file will be the same.
  • You can create a class that contains static methods to write and read fixed-length strings.

A class that writes and reads fixed-length strings

import java.io.*;

public class IOStringUtils
{
    public static void writeFixedString(
    DataOutput out, int length, String s) throws IOException
    {
        for (int i = 0; i < length; i++)
        {
            if (i < s.length())
                out.writeChar(s.charAt(i));    // write char
            else
                out.writeChar(0);      // write unicode zero
        }
    }

    public static String getFixedString(
    DataInput in, int length) throws IOException
    {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < length; i++)
        {
            char c = in.readChar();
            // if char is not Unicode zero add to string
            if (c != 0)
                sb.append(c);
        }
        return sb.toString();
    }
}
Previous | Introduction | Connect | Read and write | Fixed-length strings | Test random access | Class with a random-access file | Address book