Ajo replacuje se tam primo File.separator, takze to funguje spravne...

LZ

2008/10/21 Oto Buchta <[EMAIL PROTECTED]>:
> On Tue, Oct 21, 2008 at 05:31:48PM +0200, Lukáš Zapletal wrote:
>>
>> V podstate je to korektni, jen to ma jednu nevyhodu - na UNIXu je \
>> normalni znak, ktery muze byt soucasti nazvu souboru. Tudiz by to
>> generovalo spatny nazev. Tj replacuju to jen, kdyz jsem na platofme
>
> To je preci jedno. Stejne se new File() musi predhodit KOREKTNI nazev souboru
> vcetne cesty a File musi spravne rozeznat, co je a co neni platne pro jmeno
> souboru. A to, co se replacuje, je file.separator, nikoli Windows file
> separator. Takze na UNIXu se / preplacne /, takze se nic nestane.
> Na Woknech se \ preplacne za / a vysledek je ten, ktery je ocekavan.
>
> Problem samozrejme nastane, pokud by nahodou jmeno souboru na nejakem 
> obskurnim
> systemu mohlo obsahovat '/'. Ale to by to stejne nefungovalo uz z principu.
>
> tapik
>
>> Windows. Delaji to takhle v Eclipse... Tj nejak takhle:
>>
>> import java.io.File;
>>
>> public class PathUtil {
>>
>>       /** Constant value indicating if the current platform is Windows */
>>       private static final boolean WINDOWS = java.io.File.separatorChar == 
>> '\\';
>>
>>       private PathUtil() {
>>               // static class
>>       }
>>
>>       /**
>>        * Converts "\\" path separator to "/" IF running on windows. On 
>> UNIXes this
>>        * method returns the same string (unchanged).
>>        */
>>       public static String getPathForwardSlashesFromString(String path) {
>>               if (path == null)
>>                       throw new IllegalArgumentException("Path cannot be 
>> null");
>>
>>               if (WINDOWS)
>>                       return path.replace(File.separatorChar, '/');
>>               else
>>                       return path;
>>       }
>>
>>       /**
>>        * Converts File intsance to the universal (slashes only) string
>>        * representation which is accepted by File and other APIs as standard 
>> by
>>        * calling file.getPath() method and converting the backslashes.
>>        */
>>       public static String getPathForwardSlashes(File file) {
>>               if (file == null)
>>                       throw new IllegalArgumentException("File cannot be 
>> null");
>>
>>               String path = file.getPath();
>>               return getPathForwardSlashesFromString(path);
>>       }
>>
>>       /**
>>        * Converts File intsance to the universal (slashes only) string
>>        * representation which is accepted by File and other APIs as standard 
>> by
>>        * calling file.getAbsolutePath() method and converting the 
>> backslashes.
>>        */
>>       public static String getPathForwardSlashesAbsolute(File file) {
>>               if (file == null)
>>                       throw new IllegalArgumentException("File cannot be 
>> null");
>>
>>               String path = file.getAbsolutePath();
>>               return getPathForwardSlashesFromString(path);
>>       }
>>
>> }
>>
>> LZ
>>
>> --
>> Lukas Zapletal
>> http://lukas.zapletalovi.com
>



-- 
Lukas Zapletal
http://lukas.zapletalovi.com

Odpovedet emailem