Gravar Imagem .png

Estou a (tentar) criar uma imagem (PNG) a partir de objecto do tipo Canvas com o seguinte código:

private Dimension imageSize;
private Canvas C;

(…)

try{
Image img=C.createImage(imageSize.width,
imageSize.height);
Graphics g=img.getGraphics();
C.paint(g);
String name=“c:\temp\file.png”;
File f=new File(name);
f.createNewFile();

 ImageIO.write((RenderedImage) img,"png", f);

}catch (IOException ioe){
ioe.printStackTrace();
}

Não consigo criar o ficheiro “file.png”, obtenho uma excepção em tempo de execução:

«access denied (java.io.FilePermission c:\temp\file.png write)»
Alguém sabe o que se passa?

Esse erro não está referenciando as suas permissões de acesso a pasta Temp não?

Você tem permissão de gravar arquivos na pasta Temp?

[quote=bland]Esse erro não está referenciando as suas permissões de acesso a pasta Temp não?

Você tem permissão de gravar arquivos na pasta Temp?[/quote]

Não consigo gravar o arquivo na pasta em c:\temp\file.png nem em qualquer outra pasta! Já experimentai também criar o arquivo em C:\file.png e também não funciona. Estou a executar a Applet em win XP e a pasta temp foi criada por mim. Será problema de permissão de gravar arquivos na pasta c:\temp ? Como posso gravar um arquivo em java ? Existe outra solução ?

[quote=bland]Esse erro não está referenciando as suas permissões de acesso a pasta Temp não?

Você tem permissão de gravar arquivos na pasta Temp?[/quote]

Não consigo gravar o arquivo na pasta em c:\temp\file.png nem em qualquer outra pasta! Já experimentai também criar o arquivo em C:\file.png e também não funciona. Estou a executar a Applet em win XP e a pasta temp foi criada por mim. Será problema de permissão de gravar arquivos na pasta c:\temp ? Como posso gravar um arquivo em java ? Existe outra solução ?

RESOLVIDO!

A solução é:

  1. Criar um arquivo ‘permissoes.policy’ com as permissões neccessárias à Applet
    Conteúdo do arquivo .policy:
    grant {
    permission java.io.FilePermission “c:\temp\*”, “read, write”;
    };

  2. Informar o Java (JRE) da existência deste arquivo. Procurar na pasta, algures em “X:…\jre1.5.0_06\lib\security”, o arquivo “java.security”

procurar as seguintes linhas:

The default is to have a single system-wide policy file,

and a policy file in the user’s home directory.

policy.url.1=file:${java.home}/lib/security/java.policy
policy.url.2=file:${user.home}/.java.policy

e acrescentar a linha:

policy.url.3=file:X:/…/permissoes.policy
(obviamente, alterando a localização do arquivo .policy, criado no ponto 1.)

…E Applet já deve executar no browser e conseguir gravar o ficheiro (em win funciona!).

estou com o mesmo problema, “java.io.filepermission acesso.gif” read

ja mudei os arquivos .securyti e .policy da pasta java_home e nao adiantou, o que pode ser, será que é porque o postgres esta instalado na pasta “arquivos de programas” ???

criei o arquivo .policy, conforme descrito acima e nao esta dando certo.

continua aparecendo a mensagem

access denied (java.io.filepermission foto.jpg read)

alguem pode me ajudar ??