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 ofSeekableByteChannel
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 theBasicFileAttributes
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 thereadBasicFileAttributes
method which fetches all basic attributes for aPath
instance.
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 usexanadu.txt
as the input file.Answer 1. See
CountLetter.java
for the solution.Exercise 2. The file
datafile
begins with a singlelong
that tells you the offset of a singleint
piece of data within the same file. Write a program that gets theint
piece of data. What is theint
data?Answer 2.
123
. SeeFindInt.java
for the solution.