Zdravim,

stale to ale neni to, co potrebuji. Vypadne z toho totiz vzdy
file://cesta a ja potrebuji jen to "cesta". A o tom to cele (tahle
diskuse) je. Z instance objektu File nedostanu zadnymi rozumnymi
prostredky cestu jako "cesta" (pouze jako file://cesta, coz ukazuje i
Vas kod). Musim totiz pracovat s API, ktera vyzaduje zadani cesty k
souboru v tomto tvaru (neakceptuje ani file://cesta ani
cesta\s\obracenymi\lomitky).

Situaci povazuji za vyresenou tim, ze se zde objevilo nekolik navrhu,
jak cestu "rucne" prevest (na Windows odstranit obracena lomitka). Kod
je nekde v tomto mega-threadu.

LZ

2008/10/30 Potociar Marek <[EMAIL PROTECTED]>:
> Mate pravdu - ten povodny kod robi problemy. Tu je upraveny kod, ktory som
> otestoval na Windows aj na MacOS:
>
> package uritestapp;
>
> import java.io.File;
> import java.io.IOException;
> import java.net.URI;
> import java.net.URISyntaxException;
>
> /**
>  *
>  * @author Marek Potociar (marek.potociar at sun.com)
>  */
> public class Main {
>    public static void main(String[] args) throws IOException,
> URISyntaxException {
>
>        String myAbsolutePathString = System.getProperty("user.home") +
> "/tmp/test.txt";
>
>        File myFile = new File(myAbsolutePathString);
>        URI myPath = myFile.toURI();
>
>        URI rootPath = File.listRoots()[1].toURI(); // "C:" is the second FS
> root on my Windows
>        URI relativePath = rootPath.relativize(myPath);
>        System.out.println(relativePath.toString());
>    }
> }
>
> Jediny problem spociva v najdeni spravneho FS rootu. Na mojom laptope mam
> pod MacOS hlavny FS root namountovany ako prvy ( File.listRoots()[0] ), pod
> Windows mam "C:" namountovany ako druhy v poradi ( File.listRoots()[1] ).
>
> ...ale ak tvrdite, ze ste uz nasli lepsi sposob, ktory bude vo vseobecnosti
> fungovat, tak tuto diskusiu samozrejme nema zmysel predlzovat.
>
> S pozdravom,
> Marek Potočiar
>
>
> On 29.10.2008, at 13:05, Lukáš Zapletal wrote:
>
>>>      String myAbsolutePathString = System.getProperty("user.home") +
>>> "/tmp/test.txt"; // premenna ktoru chceme relativizovat
>>>
>>>      File myFile = new File(myAbsolutePathString);
>>>      URI myPath = new URI(myFile.getCanonicalPath());
>>>
>>>      URI rootPath = new URI(File.listRoots()[0].getCanonicalPath()); //
>>> pri ziskavani rootu treba vo vseobecnosti pocitat s tym, ze FS rootov
>>> moze
>>> byt viac...
>>>      URI relativePath = rootPath.relativize(myPath);
>>>
>>>      System.out.println(relativePath.toString()); // kontrolny vypis
>>
>> Tento kod nemuze na Windows fungovat, protoze konstruktur URI(String)
>> ocekava obycejna lomitka, tak, jak to definuje specifikace URI-path.
>> Volani myFile.getCanonicalPath() ovsem vraci na Windows ta opacna
>> lomitka, cimz dostaneme URISyntaxException.
>>
>> Ciste hypoteticky, kdyby kod fungoval (napriklad na UNIXu), to neni
>> to, co jsem potreboval, protoze volani URI.toString() vraci
>> "file:/...." a to ja nechci.
>>
>> Diky za komentar, ja bych toto tema uz uzavrel. Vysledku jsme se v
>> tomto dlouhem threadu dopidili.
>>
>> --
>> Lukas Zapletal
>> http://lukas.zapletalovi.com
>
>



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

Odpovedet emailem