public String getView() throws IOException {
        FATLock lock = fatFile.getLockInternal(false);
        try {
            StringBuilder sb = new StringBuilder();
            if (fatFile.isRoot())
                sb.append("<?xml version=\"1.0\"?>");
            sb.append("<folder name=\"");
            sb.append(fatFile.getName());
            sb.append("\" size=\"");
            sb.append(fatFile.length());
            sb.append("\" created=\"");
            sb.append(fatFile.timeCreate());
            sb.append("\" lastModified=\"");
            sb.append(fatFile.lastModified());
            synchronized (this) {
                if (fatFile.isFrozen()) {
                    sb.append("\" FROZEN=\"");
                    sb.append(true);
                }
            }
            sb.append("\">\n");
            byte[] bcontext = new byte[16];
            ByteBuffer content = ByteBuffer.wrap(bcontext);
            for (Integer currentId : childFiles) {
                if (currentId != FATFile.INVALID_FILE_ID) {
                    FATFile current = ts_rl_getFile(currentId);
                    switch (current.getType()) {
                        case FATFile.TYPE_FILE:
                            sb.append("<file name=\"");
                            sb.append(current.getName());
                            sb.append("\" size=\"");
                            sb.append(current.length());
                            sb.append("\" created=\"");
                            sb.append(current.timeCreate());
                            sb.append("\" lastModified=\"");
                            sb.append(current.lastModified());
                            sb.append("\">");
                            Arrays.fill(bcontext, (byte)' ');
                            content.clear();
                            try (FATFileChannel fc = current.getChannelInternal(false)) {
                                fc.read(content);
                            }
                            sb.append(new String(bcontext));
                            sb.append("</file>\n");
                            break;
                        case FATFile.TYPE_DELETED:
                            sb.append("<deleted/>\n");
                            break;
                        case FATFile.TYPE_FOLDER:
                            sb.append(current.getFolder().getView());
                            break;
                    }
                }
            }
            sb.append("</folder>\n");
            return sb.toString();
        } finally {
            lock.unlock();
        }
    }