[quote=BrunoRB]Olá, estou criando um arquivo através da classe file, o código é o seguinte:
File arquivo = new File ("/home/bruno/Área\ de\ trabalho/Clientes.txt");
O compilador fica acusando erro por causa dos caracteres de escape ( \ \ ) que servem para indicar um espaço no nome do diretório (linux), porém forçando a execução o programa roda sem nenhum problema. Gostaria de saber se há algum outro modo de referenciar um diretório desse tipo, ou então se teria como fazer o compilador ignorar esse “erro”. Agradeço qualquer ajuda.[/quote]
O nome “de verdade” do arquivo (ou seja, aquele que é usado pelo sistema operacional para abrir o arquivo, não o que você vê na tela) é, em Unix/Linux:
/home/bruno/Área de trabalho/Clientes.txt
Note que você pode, para listar esse arquivo no shell (por exemplo), usar um dos três seguintes comandos:
ls ‘/home/bruno/Área de trabalho/Clientes.txt’
ls “/home/bruno/Área de trabalho/Clientes.txt”
ls /home/bruno/Área\ de\ trabalho/Clientes.txt
Você entendeu para que serve o '\ '? Ele não faz parte do nome do arquivo “em si”. Ele serve para avisar o shell que você não terminou o argumento (normalmente os argumentos são separados por espaços ou tabs, não?) e deseja continuar a digitar o nome.
Quando você cerca o argumento com aspas (simples ou duplas - a interpretação das aspas simples e duplas é um pouco diferente, mas não vou explicar aqui para não lhe confundir), os caracteres como espaços não precisam ser “escapados” porque tudo é considerado como um único argumento, cujo valor é:
/home/bruno/Área de trabalho/Clientes.txt
As regras para o uso das sequências de escape no Java são diferentes das regras do shell (não importa se é o Bourne, C-Shell, Bash ou Korn shell). Uma delas é que não existe "\ " (backslash + space) no Java, só no shell. Para representar um espaço normal não se usa um escape.
No caso do Java, os caracteres de escape são: \r (ASCII CR), \n (ASCII LF), \t (ASCII TAB), \f (ASCII FF), ’ , " , \ e \uXXXX onde XXXX são 4 dígitos hexadecimais que representam um “code point” no Unicode. Notou que não há um "\ "?
Confira em http://docs.oracle.com/javase/tutorial/java/data/characters.html