Trail: Essential Classes
Lesson: Basic I/O
Home Page > Essential Classes > Basic I/O
Answers to Questions and Exercises: Basic I/O

Questions

Question 1. What class and method would you use to read a few pieces of data that are at known positions near the end of a large file?

Answer 1. Path.newByteChannel returns an instance of SeekableByteChannel which allows you to read from (or write to) any position in the file.

Question 2.When invoking format, what is the best way to indicate a new line?

Answer 2. Use the %n conversion — the \n escape is not platform independent!

Question 3. How would you determine the MIME type of a file?

Answer 3. The Files.probeContentType method uses the platform's underlying file type detector to evaluate and return the MIME type.

Question 4. What method(s) would you use to determine whether a file is a symbolic link?

Answer 4. You would use the isSymbolicLink method in the BasicFileAttributes class. The code might look like this:

Path file=...;
boolean isSymbolicLink = Attributes.readBasicFileAttributes(file, LinkOption.NOFOLLOWLINKS).isSymbolicLink();

In this example, the isSymbolicLink method has been chained to the readBasicFileAttributes method which fetches all basic attributes for a Path instance.

Exercises

Exercise 1. Write an example that counts the number of times a particular character, such as e, appears in a file. The character can be specified at the command line. You can use xanadu.txt as the input file.

Answer 1. See CountLetter.java for the solution.

Exercise 2. The file datafile begins with a single long that tells you the offset of a single int piece of data within the same file. Write a program that gets the int piece of data. What is the int data?

Answer 2. 123. See FindInt.java for the solution.

Previous page: Questions and Exercises: Basic I/O