Problema com acentuação de arquivos/diretórios em java no linux
3 respostas
C
cleiton.rs
Olá a todos, sou novato no fórum e estou com um probleminha.
Fiz uma aplicação java que faz uma cópia de um determinado diretório ou arquivo de um local x para outro local y.
Ele realiza a tarefa facilmente, porém quando o file path do arquivo é acentuado ou com algum caractere especial ele não encontra o arquivo/diretório.
OBS.: no windows ele funciona belezinha, já no linux é que ocorre este problema. Quando ele encontra um arquivo/diretorio acentuada a aplicação para e não consegue localizar o arquivo. Por exemplo um diretorio:
/home/aplicação
ele reconhece como
/home/aplica??o
Isso é o retorno que ele me traz, mas não encontra o diretorio/arquivo para efetuar a cópia.
Já tentei mudar a codificação da aplicação, testei quase todas as codificações desde UTF-8 a ISO e ASCII, tentei compilar o codigo diretamente no linux, e nada deu certo.
Agradeço a quem puder me dar um luz sobre este problema!
Olá a todos, sou novato no fórum e estou com um probleminha.
Fiz uma aplicação java que faz uma cópia de um determinado diretório ou arquivo de um local x para outro local y.
Ele realiza a tarefa facilmente, porém quando o file path do arquivo é acentuado ou com algum caractere especial ele não encontra o arquivo/diretório.
OBS.: no windows ele funciona belezinha, já no linux é que ocorre este problema. Quando ele encontra um arquivo/diretorio acentuada a aplicação para e não consegue localizar o arquivo. Por exemplo um diretorio:
/home/aplicação
ele reconhece como
/home/aplica??o
Isso é o retorno que ele me traz, mas não encontra o diretorio/arquivo para efetuar a cópia.
Já tentei mudar a codificação da aplicação, testei quase todas as codificações desde UTF-8 a ISO e ASCII, tentei compilar o codigo diretamente no linux, e nada deu certo.
Agradeço a quem puder me dar um luz sobre este problema!
Oi Cleiton.
É possível postar o seu código?
Fica mais fácil de analisar e/ou dar sugestões.
Abraços.
C
cleiton.rs
Olá cara, segue o código básico que utilizo:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */packagecopiadir;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;/** * * @author Cleiton */publicclassMain{//Função de copia de arquivospublicvoidcopiarArquivo(FileorigemArquivo,FiledestinoArquivo)throwsIOException{InputStreamin=newFileInputStream(origemArquivo);OutputStreamout=newFileOutputStream(destinoArquivo);// Transfere todos os bytes de in para outbyte[]buf=newbyte[1024];intlen;while((len=in.read(buf))>0){out.write(buf,0,len);}in.close();out.close();}//Função de copia de diretorios.publicvoidcopiarDiretorio(FileorigemDiretorio,FiledestinoDiretorio)throwsIOException{if(origemDiretorio.isDirectory()){if(!destinoDiretorio.exists()){destinoDiretorio.mkdir();}String[]children=origemDiretorio.list();for(inti=0;i<children.length;i++){copiarDiretorio(newFile(origemDiretorio,children[i]),newFile(destinoDiretorio,children[i]));}}else{//caso encontre algum arquivo, chama a função copiarArquivo e copia todos os arquivos.copiarArquivo(origemDiretorio,destinoDiretorio);}}/** * @param args the command line arguments */publicstaticvoidmain(String[]args){// TODO code application logic hereMainm=newMain();Filedir1=newFile("/home/dir1/");Filedir2=newFile("/home/dir2/");try{m.copiarDiretorio(dir1,dir2);}catch(IOExceptionex){System.out.println("Houve um erro ao copiar "+ex);}}}
Façam o teste, coloque qualquer arquivo/diretorio acentuado dentro do diretorio /home/dir1/
Façam o teste tanto em windows (onde funciona) e no linux (onde ocorre o erro).
nel
Oi!
Infelizmente não tenho Linux aqui para testar, mas, o Linux está aceitando tu salvar diretório/arquivo com caracteres especiais?
É estranho, pois você simplesmente busca um determinado arquivo. Por curiosidade, tente adicionar um único arquivo e salve ele como UTF-8.