public File getFile(String fileName) {
        // check first whether file name is valid or not
        File obj = null;
        if (fileName == null || fileName.length() == 0) {
            System.out.println(name_ + ".getFile(): Warning - invalid "
                    + "file name.");
            return obj;
        }

        Iterator it = fileList_.iterator();
        int size = 0;
        int index = 0;
        boolean found = false;
        File tempFile = null;

        // find the file in the disk
        while (it.hasNext()) {
            tempFile = (File) it.next();
            size += tempFile.getSize();
            if (tempFile.getName().equals(fileName)) {
                found = true;
                obj = tempFile;
                break;
            }

            index++;
        }

        // if the file is found, then determine the time taken to get it
        if (found) {
            obj = (File) fileList_.get(index);
            double seekTime = getSeekTime(size);
            double transferTime = getTransferTime(obj.getSize());

            // total time for this operation
            obj.setTransactionTime(seekTime + transferTime);
        }

        return obj;
    }