Section 11.10 Exercises
Note: For programming exercises, first draw a UML class diagram describing all classes and their inheritance relationships and/or associations.
-
Explain the difference between each of the following pairs of terms:
- Fill in the blanks.
- Unlike text files, binary files do not have a special
__________
character. - In Java, the
String
array parameter in themain()
method is used for__________
. __________
files are portable and platform independent.- A
__________
file created on one computer can’t be read by another computer.
- Arrange the following kinds of data into their correct hierarchical relationships:
bit
,field
,byte
,record
,database
,file
,String
,char
. - In what different ways can the following string of 32 bits be interpreted?
00010101111000110100000110011110
- When reading a binary file, why is it necessary to use an infinite loop that’s exited only when an exception occurs?
- Is it possible to have a text file with 10 characters and 0 lines? Explain.
- In reading a file, why is it necessary to attempt to read from the file before entering the read loop?
- When designing binary I/O, why is it especially important to design the input and output routines together?
- What’s the difference between ASCII code and UTF code?
- Could the following string of bits possibly be a Java object? Explain.
00010111000111101010101010000111001000100 11010010010101010010101001000001000000111
- Write a method that could be added to the
TextIO
program to read a text file and print all lines containing a certain word. This should be avoid
method that takes two parameters: The name of the file and the word to search for. Lines not containing the word should not be printed. - Write a program that reads a text file and reports the number of characters and lines contained in the file.
- Modify the program in the previous exercise so that it also counts the number of words in the file. (Hint: The
StringTokenizer
class might be useful for this task.) - Modify the
ObjectIO
program so that it allows the user to designate a file and then inputStudent
data with the help of a GUI. As the user inputs data, each record should be written to the file. - Write a program that will read a file of
int
s into memory, sort them in ascending order, and output the sorted data to a second file. - Write a program that will read two files of
int
s, which are already sorted into ascending order, and merge their data. For example, if one file contains 1, 3, 5, 7, 9, and the other contains 2, 4, 6, 8, 10, then the merged file should contain 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. - Suppose you have a file of data for a geological survey. Each record consists of a longitude, a latitude, and an amount of rainfall, all represented by
double
s. Write a method to read this file’s data and print them on the screen, one record per line. The method should bevoid
and it should take the name of the file as its only parameter. - Suppose you have the same data as in the previous exercise. Write a method that will generate 1,000 records of random data and write them to a file. The method should be
void
and should take the file’s name as its parameter. Assume that longitudes have values in the range \(+/-\) 0 to 180 degrees, latitudes have values in the range \(+/-\) 0 to 90 degrees, and rainfalls have values in the range 0 to 20 inches. - Design and write a file copy program that will work for either text files or binary files. The program should prompt the user for the names of each file and copy the data from the source file into the destination file. It should not overwrite an existing file, however. (Hint: Read and write the file as a file of
byte
.) - Design a class, similar to
Student
, to represent anAddress
. It should consist of street, city, state, and zip code and should contain its ownreadFromFile()
andwriteToFile()
methods. - Using the class designed in the previous exercise, modify the
Student
class so that it contains anAddress
field. Modify theObjectIO
program to accommodate this new definition ofStudent
and test your program. - Write a program called
Directory
, which provides a listing of any directory contained in the current directory. This program should prompt the user for the name of the directory. It should then print a listing of that directory. The listing should contain the following information: The full path name of the directory, and then include the file name, length, and last modified date, and a read/write code for each file. The read/write code should be an r if the file is readable and a w if the file is writeable, in that order. Use a “-” to indicate not readable or not writeable. For example, a file that is readable but not writable will have the code r-. Here’s an example listing:Note that theListing for directory: myfiles name length modified code index.html 548 129098 rw index.gif 78 129190 rw me.html 682 128001 r- private.txt 1001 129000 --
File.lastModified()
returns along
, which gives the modification time of the file. This number can’t easily be converted into a date, so just report its value. - Challenge: Modify the
OneRowNimGUI
class that is listed in Chapter 4’s Figure 4-25 so that the user can save the position of the game to a file or open and read a game position from a file. You should add two newJButton
s to the GUI interface. Use the object serialization example as a model for your input and output streams. - Challenge: In Unix systems, there’s a program named
grep
that can list the lines in a text file containing a certain string. Write a Java version of this program that prompts the user for the name of the file and the string to search for. - Challenge: Write a program in Java named
Copy
to copy one file into another. The program should prompt the user for two file names,filename1
andfilename2
. Bothfilename1
andfilename2
must exist or the program should throw aFileNotFoundException
. Althoughfilename1
must be the name of a file (not a directory),filename2
may be either a file or a directory. Iffilename2
is a file, then the program should copyfilename1
tofilename2
. Iffilename2
is a directory, then the program should simply copyfilename1
intofilename2
. That is, it should create a new file with the namefilename1
inside thefilename2
directory, copy the old file to the new file, and then delete the old file.
You have attempted of activities on this page.