Pergunta

aplicativo My Java está economizando material em 'user.home', mas em janelas, este não parece ser o caminho correto para salvar informações do aplicativo (como um amigo me disse). Uma outra opção é usar a api preferências, mas não é possível configurar o local hsqldb usando a API preferências. Além disso, quero todos os arquivos para estar disponível na mesma pasta (local de banco de dados, configuração, cache, ...).

Eu estou procurando algum código de exemplo ou um quadro que cuida de material específico-os.

Foi útil?

Solução

No meu sistema SP3 WinXP Pro, user.home pontos para C:\Documents and settings\<username> Monte de aplicativos apenas armazenar seus dados lá (em vez de esses dados caminho + aplicação, mas alguns outros ir até lá), criando um diretório no estilo Unix, ie. dot + nome da aplicação (exemplos:. .antexplorer, .sqlworkbench, .squirrel-SQL, .SunDownloadManager, .p4qt, .gimp-2,4, etc).

Looks como uma prática decente, comum ...

Outras dicas

É incomum para um aplicativo de janela para salvar os dados em user.home mas não "errado". aplicações do Windows gostam de espalhar seus dados em todo o lugar (um pouco no registro, um pouco na do aplicativo diretório, um pouco no diretório do Windows, um pouco em System32, um pouco aqui e um pouco lá instalar). No final, o que torna impossível de backup limpa ou remover algo que resulta na famosa "Windows rot" (ou seja, você tem que reinstalar todos os meses).

De qualquer forma. Se você realmente não quiser usar user.home (e não vejo razão para não), use o código como isso a partir da Apache commons-lang para descobrir se você está em execução no Windows. Se este rendimentos verdade, aparecer uma janela de seleção de diretório onde o usuário pode especificar onde deseja salvar seus dados.

Salvar essas informações em Preferências e utilizar este caminho na próxima vez em que o aplicativo é iniciado. Desta forma, os usuários podem especificar onde eles querem que seus dados e você só tem que deixar um bit de informação nos prefs.

Para uma "foo" aplicativo que eu crie um diretório chamado ".foo" dentro user.home. Para o Windows vai parecer um pouco estranho, mas quase não havia ninguém nunca parece nesse diretório (e ela está cheia de diretórios obscuros de qualquer maneira) e no Linux / Solaris / ... ele irá resultar em um diretório oculto que não atravancar o diretório home do usuário visualmente.

ler dinamicamente (do seu código) o valor da variável de ambiente APPDATA, e armazenar seus arquivos de configuração em %APPDATA%\\.myapp\config

==> valor é dependente de plataforma, não use quaisquer caminhos embutidos, sempre ler o env. var.

O problema não é Wiindows mas a configuração java padrão.

longa discussão http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4787931> Aqui

gostaria de aconselhar pegar isto em um '-D MYLOC =% USERPROFILE%' propriedade na linha de comando.

Note que você só vai obter um "USERPROFILE" se o usuário fez um login desktop, isso não se definir se o usuário logado remotly com Citrix ou similar ou via ssh, também, coprporate desktops mexer com essa configuração e pode configurá-lo para algo inutilizável.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top