Olá amigos,
Bom, procurei pelo fórum algum tópico com problema parecido, não encontrei, resolvi então criar um para buscar ajuda de vcs.
Estou engatinhando com java, e estou desenvolvendo um programinha que tenho pronto em vb6, mas estou refazendo ele em java, muito bem, meu problema é , esse programa fornece um JFilechooser, o usuário escolhe um arquivo,o programa mapeia unidades de alguns pcs na rede, e faz a copia do arquivo selecionado pelo usuário nesses mapeamentos, essa rotina já funciona com perfeição, o meu problema é que, quando eu copio arquivos com espaços em branco no nome (ex: c:\meu arquivo de teste.txt) com FileChannel, ele me retorna um java.lang.InterruptedException, cópias com arquivos de nomes sem espaço em branco funcionam normalmente, minhas dúvidas: nesse caso eu preciso desenvolver uma rotina que trate os espaços nos arquivos, ou há outro jeito???, eu andei pesquisando bastante na documentação da java.nio.channels.FileChannel e não consegui (entender ou encontrar uma solução).
eis um pedaço do código
...
public static void main(String[] args) throws IOException{
/*eu criei a classe prova mais acima do código, que cria um JFileChooser onde o usuário seleciona um arquivo para a copia
e joga o caminho (.getPath();) na variável caminho, e criei tmb uma variável arq_sel com o nome do arquivo, essas variaveis
estão declaradas como public static na classe prova que não colei aqui no código por não achar necessário, já que isso já está funcionando normalmente.)
Prova.escolherArquivos();
try {
//váriavel que age como contador das unidades mapeadas, começando com a unidade g:
char var ='g';
//variável que age como contador dos ip dos pcs a serem mapeados.
int ip =18;
while (ip<=31 && var<='g'){
//if para pular o mapeamento no pc com ip final 24, pois não é necessário realizar o mapeamento dele
if(ip==24){
ip++;
}
else{
String map ="net use "+ var +": \\10.2.8."+ ip +"\c$";
String destino = ""+ var + ":\Documents and Settings\master\Desktop\"+ arq_sel +"";
//executa o comando no prompt do windows e mapeia as unidades
Runtime.getRuntime().exec(map);
//faz a copia dos arquivos
//a variavel caminho está declarada no código como public static na classe prova que é minha classe principal e seu valor vem do JFileChooser
FileChannel orig = new FileInputStream(caminho).getChannel();
FileChannel dest = new FileOutputStream(destino).getChannel();
dest.transferFrom(orig, 0,orig.size());
orig.close();
dest.close();
var++;
ip++;
}
}
}
catch(IOException e){
e.printStackTrace();
}
}
Bem amigos, espero que não tenha sido muito confuso, e como eu disse estou começando com java, sugestões, ensinamentos e “puxões de orelha” são muito bem vindos!!! , abraços …vlw.