| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/07/2009 09:04:39
|
VeraApFigueiredo
JavaChild
Membro desde: 14/12/2008 16:00:39
Mensagens: 133
Offline
|
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.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/07/2009 09:09:48
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/07/2009 09:27:57
|
Metaleiro
Virtual Machine Man
![[Avatar]](/images/avatar/c2155acc6d5bcda7debfb19c3abef4af.jpg)
Membro desde: 06/07/2006 10:55:54
Mensagens: 669
Localização: São Bernardo do Campo - SP
Offline
|
VeraApFigueiredo wrote: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.
Não sei se funciona, mas você pode tentar usar o comando :
Esse seria o comando, é só passar a sintaxe correta que você passaria para o shell
|
"Why, Mr. Anderson? Why do you do it? Why get up? Why keep fighting? Do you believe you're fighting for something? For more than your survival? Can you tell me what it is? Do you even know? Is it freedom? Or truth? Perhaps peace? Yes? No? Could it be for love? Illusions, Mr. Anderson. Vagaries of perception. The temporary constructs of a feeble human intellect trying desperately to justify an existence that is without meaning or purpose. And all of them as artificial as the Matrix itself, although only a human mind could invent something as insipid as love. You must be able to see it, Mr. Anderson. You must know it by now. You can?t win. It?s pointless to keep fighting. Why, Mr. Anderson? Why? Why do you persist?"
Neo :
-Because is my choice
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/07/2009 09:54:34
|
VeraApFigueiredo
JavaChild
Membro desde: 14/12/2008 16:00:39
Mensagens: 133
Offline
|
Bom dia thingol
Será que você poderia dar uma olhada no meu código e me dizer onde se encaixa isso?
// Gerando o arquivo .txt contendo as informacoes da oficializacao
String conteudo = nomeVersao + " #" + dataatual + " => " + horaatual + " #ADSC:" + nomeBI + " #" + atividade;
String caminhoArquivo = "/home/users/tatianam/temp_oficializa/caderno/" + nomeVersao;
try {
File f = new File(caminhoArquivo); // isto não cria um novo arquivo, apenas um objeto que gerencia algumas informações sobre um nome de arquivo
if (!f.exists()) {
//Se caso o arquivo não existir cria o arquivo.txt
BufferedWriter ArquivoTXT = new BufferedWriter(new FileWriter(caminhoArquivo));
Runtime.getRuntime().exec("chmod 777" + ArquivoTXT);
}
// o true significa q o arquivo será constante
FileWriter x = new FileWriter(caminhoArquivo, true);
conteudo += "\n\r"; // criando nova linha e recuo no arquivo
x.write(conteudo); // armazena o texto no objeto x, que aponta para o arquivo
x.close(); // cria o arquivo
}
// em caso de erro apresenta mensagem abaixo
catch (Exception e) {
info("O arquivo não foi gravado");
}
return "AvisoControle";
}
to passando dessa forma, mas não está funcionando.
Muito obrigada.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/07/2009 10:00:31
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Cuidado com os espaços! Seu comando ficou como
chmod 777/home/users/tatianam/temp_oficializa/caderno/blablabla...
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/07/2009 12:17:15
|
VeraApFigueiredo
JavaChild
Membro desde: 14/12/2008 16:00:39
Mensagens: 133
Offline
|
Muito obrigada pela ajuda!
deu certo!!!
|
|
|
 |
|
|