Você não pode fazer isso diretamente via Java. Você terá de criar o tal arquivo, fechá-lo, e então chamar o comando do Unix (chmod) através de Runtime.exec.
(Há a opção de usar JNA e chamar a API do Unix “chmod”, mas eu não aconselharia usar JNA em uma aplicação Web, já que o uso de JNI e/ou JNA deixa seu web container - como o Tomcat - muito mais instável.)
Isso deve mudar com o Java 7, mas enquanto isso não ocorre, você terá de fazer isso mesmo. Sorry.
Metaleiro
VeraApFigueiredo:
Bom dia pessoal,
To fazendo a criação de um arquivo .txt , usando o BufferedWriter .
BufferedWriter ArquivoTXT = new BufferedWriter(new FileWriter(caminhoArquivo));
Porém preciso passar a permissão para gravar esse arquivo, no caso (chmod 777)
Alguém sabe como posso passar essa permissão para criação do arquivo?
Muito obrigada.
[color=darkblue] Não sei se funciona, mas você pode tentar usar o comando :[/color]
StringcaminhoArquivo="/home/users/tatianam/temp_oficializa/caderno/"+nomeVersao;try{Filef=newFile(caminhoArquivo);//istonãocriaumnovoarquivo,apenasumobjetoquegerenciaalgumasinformaçõessobreumnomedearquivoif(!f.exists()){//Secasooarquivonãoexistircriaoarquivo.txtBufferedWriterArquivoTXT=newBufferedWriter(newFileWriter(caminhoArquivo));Runtime.getRuntime().exec("chmod 777"+ArquivoTXT);}//otruesignificaqoarquivoseráconstanteFileWriterx=newFileWriter(caminhoArquivo,true);conteudo+="\n\r";//criandonovalinhaerecuonoarquivox.write(conteudo);//armazenaotextonoobjetox,queapontaparaoarquivox.close();//criaoarquivo}//emcasodeerroapresentamensagemabaixocatch(Exceptione){info("O arquivo não foi gravado");}return"AvisoControle";}
to passando dessa forma, mas não está funcionando.
O chmod não sabe separar o número do nome do arquivo, portanto ele não funcionou.
Dica número um: nunca use a versão do Runtime.exec que aceita apenas um parâmetro. Use aquela que requer um array de strings, contendo os componentes do comando. É que a versão do Runtime.exec que aceita apenas um parâmetro é muito sujeita aos seguintes problemas:
a) Esse tipo de coisa que você fez (se confundir com os espaços);
b) Argumentos com espaços (por exemplo, um nome de arquivo com espaços no meio) também dá problemas