2010-10-12 32 views
0

D'abord, j'utilise Ubuntu! :)Utilisation de "pathdir" sur les applications Java

J'ai besoin d'aide ici, je construit un Java App, je veux définir un arbre de chemin par défaut, comme ceci:

> cd /anyDirectory/meuRestaurante
> ls
bin/ data/
> cd bin
> ls
meuRestaurante.jar
> cd ..
> cd data
> ls
Cartoes.txt Clientes.txt

Je veux que mon Java App sauvegarder les fichiers de ces txt sur le répertoire /data, tout est sur le répertoire /bin. Exctaly, comment devrait être si j'utiliser ces fonctions pour lire/enregistrer les fichiers du txt .:

public static String readFile(String fileName) { 
    try { 
     File file = new File("."+fileName); 
     FileReader reader = new FileReader(file); 
     BufferedReader in = new BufferedReader(reader); 
     String string; 
     String returnString = ""; 
     while ((string = in.readLine()) != null) { 
      returnString = "" + returnString + string; 
     } 
     in.close(); 
     return returnString; 
    } catch (IOException e) { 
     System.err.println("readFile " + e.getMessage()); 
     return null; 
    } 
} 

public static boolean writeFile(String fileName, String newContent){ 
    try { 
     BufferedWriter out = new BufferedWriter(new FileWriter(fileName, true)); 
     out.write(newContent); 
     out.close(); 
     return true; 
    }catch(IOException e){ 
     System.err.println("writeFile " + e.getMessage()); 
     return false; 
    } 
} 

Comment devrait être le fileName?

Est-ce que quelqu'un a un pourboire?

Répondre

0

Essayez ceci:

data/Cartoes.txt 
0

Si ces fichiers sont destinés à être lus seulement, les mettre dans un pot, ajoutez le pot aux applications de classe avec la route de temps d'exécution et d'y accéder en utilisant getResource().

Si les fichiers sont destinés à être écrits en (lecture/écriture), évitez d'essayer d'enregistrer des fichiers dans un emplacement relatif à l'exécutable de l'application (1). Cela ne mènera à aucune fin de frustration plus tard.

À la place, placez les fichiers de données dans un sous-répertoire de $ {user.home}. Le sous-répertoire a pour but de s'assurer que les applications n'écrasent pas les autres fichiers. Le sous-répertoire peut être basé sur le nom de paquet de la classe principale de l'application, qui devrait être unique à votre organisation.

(1)

  • Ni applets ni applications. lancé en utilisant Java Web Start sont en mesure de découvrir l'emplacement de l'application. est stocké sur le disque local.

  • Microsoft conseille aux développeurs depuis des années de ne pas enregistrer les paramètres du programme dans le dossier 'Program Files'.

  • Alors qu'une application. est presque garanti d'être capable d'écrire/lire de la maison de l'utilisateur, le resserrement de la sécurité ces derniers temps signifie que d'autres endroits sont beaucoup moins fiables.