- Main goals and usage hints
- The main intentention of this interface is to provide an universal portable and
high performance access to file system issues on any operating system.
There are a few main goals:
1.The path specifications always has to be absolut. Any usage of relative path specifications is forbidden. Exceptions are
osl_getAbsoluteFileURL. Most operating systems provide a "Current Directory" per process. This is the reason why relative path specifications can cause problems in multithreading environments.
2.Proprietary notations of file paths are not supported. Every path notation must the file URL specification. File URLs must be encoded in UTF8 and after that escaped. Although the URL parameter is a unicode string, the must contain only ASCII characters
3.The caller cannot get any information whether a file system is case sensitive, case preserving or not. The operating system implementation itself should determine if it can map case-insensitive paths. The case correct notation of a filename or file path is part of the "File Info". This case correct name can be used as a unique key if neccessary.
4. Obtaining information about files or volumes is controlled by a bitmask which specifies which fields are of interest. Due to performance issues it is not recommended to obtain information which is not needed. But if the operating system provides more information anyway the implementation can set more fields on output as were requested. It is in the responsibility of the caller to decide if he uses this additional information or not. But he should do so to prevent further unnecessary calls if the information is already there.
The input bitmask supports a flag
osl_FileStatus_Mask_Validatewhich can be used to force retrieving uncached validated information. Setting this flag when calling
osl_getFileStatusin combination with no other flag is a synonym for a "FileExists". This should only be done when processing a single file (f.e. before opening) and NEVER during enumeration of directory contents on any step of information processing. This would change the runtime behaviour from O(n) to O(n*n/2) on nearly every file system.
On Windows NT reading the contents of an directory with 7000 entries and getting full information about every file only takes 0.6 seconds. Specifying the flag
osl_FileStatus_Mask_Validatefor each entry will increase the time to 180 seconds (!!!).
Top of Page
Copyright © 2012, The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache, the Apache feather logo, Apache OpenOffice and OpenOffice.org are trademarks of The Apache Software Foundation. Other names may be trademarks of their respective owners.