Package org.eclipse.birt.core.archive
Class ArchiveUtil
java.lang.Object
org.eclipse.birt.core.archive.ArchiveUtil
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic voidstatic voidarchive(String folderName, IStreamSorter sorter, String fileName) Compound File Format:
1long(stream section position) + 1long(entry number in lookup map) + lookup map section + stream data section
The Lookup map is a hash map.static voidarchive(String folderName, IStreamSorter sorter, String fileName, boolean contentEscape) Compound File Format:
1long(stream section position) + 1long(entry number in lookup map) + lookup map section + stream data section
The Lookup map is a hash map.static final intbytesToInteger(byte[] b) Assemble four bytes to an int value, make sure that the passed bytes length is larger than 4.static final intbytesToInteger(byte[] b, int off) static final longbytesToLong(byte[] b) Assemble eight bytes to an long value, make sure that the passed bytes length larger than 8.static final longbytesToLong(byte[] b, int off) static voidconvertFolderArchive(String folder, String file) static voidcopy(IArchiveFile inArchive, IArchiveFile outArchive) static voidcopy(IArchiveFile inArchive, IArchiveFile outArchive, Map<String, String> transformations) static voidcopy(IDocArchiveReader reader, IDocArchiveWriter writer) static voidcopy(IDocArchiveReader reader, IDocArchiveWriter writer, Map<String, String> transformations) static voidIf the parent folder of the file doesn't exsit, create the parent folder.static final IDocArchiveReadercreateReader(IDocArchiveWriter writer) static voiddeleteAllFiles(File dirOrFile) Recursively delete all the files and folders under dirOrFilestatic voidstatic StringgenerateUniqueFileFolderName(String originalName) Generate a unique file or folder name which is in the same folder as the originalNamestatic StringgetEntryName(String filePath) escape entry name to a valid file namestatic StringgetEntryName(String rootPath, String fullPath) convert a folder to entry name.static StringgetFilePath(String entryName) escape entry name to a valid file path duplicate '/' will be removedstatic StringgetFilePath(String rootPath, String entryName) static StringgetFolderPath(String rootPath, String entryName) static StringgetFullPath(String root, String relative) static StringgetRelativePath(String rootPath, String fullPath) static final voidintegerToBytes(int v, byte[] b) static final voidintegerToBytes(int v, byte[] b, int off) static voidlistAllFiles(File dir, ArrayList<? super File> fileList) Get all the files under the specified folder (including all the files under sub-folders)static final voidlongToBytes(long v, byte[] b) static final voidlongToBytes(long v, byte[] b, int off) static booleanremoveFileAndFolder(File file) static String[]split strings by the character.static voidunzipArchive(File zipArchive, String tempFolderPath) static voidzipFolderToStream(String tempFolderPath, OutputStream ostream)
-
Field Details
-
UNIX_SEPARATOR_CHAR
public static final char UNIX_SEPARATOR_CHAR- See Also:
-
UNIX_SEPERATOR
- See Also:
-
FILE_EXTENSION
To support file/folder with same name, use the FILE_EXTENSION for files.- See Also:
-
-
Constructor Details
-
ArchiveUtil
public ArchiveUtil()
-
-
Method Details
-
getFolderPath
- Parameters:
rootPath- - the absolute path of the root folder.relativePath- - the relative path.- Returns:
- the absolute path which concats rootPath and relativePath. The returned absolute path can be used directly to locate the file.
-
getFilePath
-
getFullPath
- Parameters:
root- use unix path separatorrelative- use unix path separator- Returns:
-
split
split strings by the character. It implements javascript's behavior as always return count(splitChar)+1 for example, split char is '/':- '/' => ['', '']
- '/abc/' => ['', 'abc', '']
- 'abc' => 'abc'
- Parameters:
value-splitChar-- Returns:
-
getFilePath
escape entry name to a valid file path duplicate '/' will be removed- Parameters:
name-- Returns:
-
getEntryName
escape entry name to a valid file name- Parameters:
filePath- , a relative file path, start with "/"- Returns:
- entry name
-
getEntryName
convert a folder to entry name.- Parameters:
rootPath- - the absolute path of the root folder. The path is seperated by system's File seperator.fullString- - the absolute path of the stream. The path is seperated by system's File seperator.- Returns:
- the relative path string. The path is based on Unix syntax and starts with "/".
-
getRelativePath
-
generateUniqueFileFolderName
Generate a unique file or folder name which is in the same folder as the originalName- Parameters:
originalName- - the original Name. For example, it could be the name of the file archive- Returns:
- a unique file or folder name which is in the same folder as the originalName
-
createParentFolder
If the parent folder of the file doesn't exsit, create the parent folder. -
deleteAllFiles
Recursively delete all the files and folders under dirOrFile- Parameters:
dirOrFile- - the File object which could be either a folder or a file.
-
zipFolderToStream
-
unzipArchive
-
copy
- Throws:
IOException
-
copy
public static void copy(IArchiveFile inArchive, IArchiveFile outArchive, Map<String, String> transformations) throws IOException- Parameters:
inArchive- Source ArchiveoutArchive- Destination Archivetransformations- Optional transformations of streams specified via java regex patterns. The map is keyed in by a regex pattern and the value will be the replacement expression which may refer capturing groups in the key. While copying the streams, if any of the key regex patterns matches the current source stream path being copied, the replacement expression is used to transform the source stream path to a target stream path.- Throws:
IOException
-
copy
- Throws:
IOException
-
copy
public static void copy(IDocArchiveReader reader, IDocArchiveWriter writer, Map<String, String> transformations) throws IOException- Parameters:
reader- Sourcewriter- Destinationtransformations- Optional Stream Transformations specified using Java regex patterns- Throws:
IOException
-
archive
- Throws:
IOException
-
convertFolderArchive
- Throws:
IOException
-
archive
public static void archive(String folderName, IStreamSorter sorter, String fileName) throws IOException Compound File Format:
1long(stream section position) + 1long(entry number in lookup map) + lookup map section + stream data section
The Lookup map is a hash map. The key is the relative path of the stram. The entry contains two long number. The first long is the start postion. The second long is the length of the stream.- Parameters:
tempFolder-fileArchiveName- - the file archive name- Throws:
IOException
-
archive
public static void archive(String folderName, IStreamSorter sorter, String fileName, boolean contentEscape) throws IOException Compound File Format:
1long(stream section position) + 1long(entry number in lookup map) + lookup map section + stream data section
The Lookup map is a hash map. The key is the relative path of the stram. The entry contains two long number. The first long is the start postion. The second long is the length of the stream.- Parameters:
tempFolder-fileArchiveName- - the file archive name- Throws:
IOException
-
listAllFiles
Get all the files under the specified folder (including all the files under sub-folders)- Parameters:
dir- - the folder to look intofileList- - the fileList to be returned
-
expand
- Throws:
IOException
-
bytesToInteger
public static final int bytesToInteger(byte[] b) Assemble four bytes to an int value, make sure that the passed bytes length is larger than 4.- Parameters:
bytes-- Returns:
- int value of bytes
-
bytesToInteger
public static final int bytesToInteger(byte[] b, int off) -
bytesToLong
public static final long bytesToLong(byte[] b) Assemble eight bytes to an long value, make sure that the passed bytes length larger than 8.- Parameters:
bytes-- Returns:
- int value of bytes
-
bytesToLong
public static final long bytesToLong(byte[] b, int off) -
integerToBytes
public static final void integerToBytes(int v, byte[] b) -
integerToBytes
public static final void integerToBytes(int v, byte[] b, int off) -
longToBytes
public static final void longToBytes(long v, byte[] b) -
longToBytes
public static final void longToBytes(long v, byte[] b, int off) -
removeFileAndFolder
-
createReader
-