Caminho URL para um java.io.File [RESOLVIDO]

Bom, preciso criar um File a partir de uma URL.
Algo como:


String caminho = "http://nome_do_servidor:631/nome_impressoa";
File arquivo = new File(caminho);

Acontece que é lançada uma excessão java.io.FileNotFoundException.
O caminho é transformado quando eu o passo pro construtor. Os “//” viram “” !


java.io.FileNotFoundException: http:\nome_do_servidor:631\nome_impressoa (A sintaxe do nome do arquivo, pasta ou nome do volume está incorreta)

Tem como sinalizar para o File não alterar esse caminho??
Alguém pode ajudar com qualquer coisa??

[]s

Tenta usar a classe URL e o metodo getFile() desta classe.

Tem um javadoc no link http://java.sun.com/j2se/1.4.2/docs/api/java/net/URL.html

    File file = new File("filename");
    
    URL url = null;
    try {
        url = file.toURL();          // file:/d:/almanac1.4/java.io/filename
    } catch (MalformedURLException e) {
    }
    file = new File(url.getFile());  // d:/almanac1.4/java.io/filename
    
    // Read the file contents using the URL
    try {
        // Open an input stream
        InputStream is = url.openStream();
        is.close();
        } catch (IOException e) {
    }

Espero ter ajudado

Pois é, já tinha tentando criar um File a partir da URL mas também não funcionou.

De qualquer forma eu resolvi alterando o caminho da Impressora.
Não é mais uma URL, com “http://” e tudo mais. Apenas um caminho na rede, com “\”.

Valeu a todos!
[]s

Esse tipo de erro costuma acontecer quando se escreve um programa no linux e tenta rodá-lo no windows e vice-versa.
Uma alternativa é substituir “/” ou “” por File.separator.

[]'s

[quote=dlt]Esse tipo de erro costuma acontecer quando se escreve um programa no linux e tenta rodá-lo no windows e vice-versa.
Uma alternativa é substituir “/” ou “” por File.separator.

[]'s[/quote]

Bom, na verdade a questão não é extamente essa.
Eu não queria justamente que ele identificasse as “//” com um File.separator e sim como um caminho de protocolo.
As // são fixadas pelo “http://” e não é um referencia a um caminho relativo de uma pasta. Sacas?!

[]s

Hmm… realmente eu confundi.
Será que isso não tem a ver com o lance “” funcionar para escape de alguns caracteres, como “”"? O que aconteceria se você substituisse “http:\” por “http:\”?

[quote=dlt]Hmm… realmente eu confundi.
Será que isso não tem a ver com o lance “” funcionar para escape de alguns caracteres, como “”"? O que aconteceria se você substituisse “http:\” por “http:\”? [/quote]

Pois é, foi o que pensei também.
O que aconteceu num teste rápido foi que ele transformou “\” em um “”, como era de se esperar. E “\ /” nem compilou!
Vou procurar depois qual é código UNICODE para “/” e ver se funciona…
(Mas mais por curiosidade. Eu já resolvi de outra forma para o projeto… :wink:

[]s