Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #11662
| From | Martin Gregorie <martin@address-in-sig.invalid> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Resource confusion |
| Date | 2012-01-31 02:45 +0000 |
| Organization | UK Free Software Network |
| Message-ID | <jg7kk4$8ho$2@localhost.localdomain> (permalink) |
| References | <Xns9FE8824D28F28jpnasty@94.75.214.39> <bs2ei7pl1i8lsq4e4rqtn46a5epgpnfmos@4ax.com> |
On Mon, 30 Jan 2012 13:33:30 -0800, Roedy Green wrote:
> On Sat, 28 Jan 2012 17:47:48 +0000 (UTC), Novice <novice@example..com>
> wrote, quoted or indirectly quoted someone who said :
>
>>I'm having trouble figuring out the best way of obtaining existing files
>>for my program to use.
>
> I would put the read-only config files in a resource in a jar. This
> means they can't get lost and they work even if the user is not capable
> of configuring his own files. They are also compact. They get updated
> automatically when you update the program.
>
> You problem then becomes, where to put the user's files. JNLP lets you
> allocate some space with a hideous name, not really suitable for the
> user to insert things except via your game. If he creates them with a
> text editor you might import them into that space or store the filenames
> (not files) in your own space so he can pick them off a menu by
> unqualified name, and you then go fetch them from the original locations
> as needed.
>
Same here: I'd put the defaults in the jar and, allow the user to put
overriding files in a master location and a one local to the user: if it
was a UNIX type system the master location would be /usr/local/etc and
the local location would be the hidden directory ~/.myapp and the program
would use a search something like this;
List<String> config = new List<String>();
config.add("~/.myapp/config.txt");
config.add("/usr/local/etc/config.txt");
boolean found = false;
for (String s : config)
{
File cf = new File(s);
if (cf.exists())
{
found = true;
// use the configuration in cf
}
}
if (!found)
// use the default configuration held as a resource in the jar file
which lets the user's configuration take preference over the site
configuration in /usr/local/etc, which in turn takes precedence over the
jar file resource.
NOTE: this assumes that each configuration is complete.
Another way to do it is to read all three config files in the *reverse*
order (from jar file, then /usr/local/etc and finally from ~/.myapp) with
items read from an earlier file being overwritten by matching items from
a later file. This approach means that the config in the jar file must
give a default value for every item, but the site and user configurations
only need to provide values for items they want to customise.
--
martin@ | Martin Gregorie
gregorie. | Essex, UK
org |
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Resource confusion Novice <novice@example..com> - 2012-01-28 17:47 +0000
Re: Resource confusion Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2012-01-28 15:44 -0400
Re: Resource confusion Lew <noone@lewscanon.com> - 2012-01-28 13:43 -0800
Re: Resource confusion Novice <novice@example..com> - 2012-01-29 05:40 +0000
Re: Resource confusion Lew <noone@lewscanon.com> - 2012-01-28 22:43 -0800
Re: Resource confusion Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2012-01-29 13:24 -0400
Re: Resource confusion Roedy Green <see_website@mindprod.com.invalid> - 2012-01-30 13:33 -0800
Re: Resource confusion Martin Gregorie <martin@address-in-sig.invalid> - 2012-01-31 02:45 +0000
Re: Resource confusion Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2012-01-31 06:32 -0400
Re: Resource confusion Martin Gregorie <martin@address-in-sig.invalid> - 2012-01-31 20:43 +0000
Re: Resource confusion Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2012-01-31 18:08 -0400
Re: Resource confusion Martin Gregorie <martin@address-in-sig.invalid> - 2012-01-31 23:01 +0000
csiph-web