2017-04-24 3 views
0

J'ai le code Java 8 suivant qui crée 1 fichier bien (le contenu dans le fichier est une ligne de texte singulière). Quelle est la meilleure façon de changer ce code afin que je me retrouve avec trois fichiers texte distincts?Comment écrire différentes valeurs à plusieurs fichiers de sortie en Java?

String os = System.getProperty("os.name"); 
String jv = System.getProperty("java.version"); 
String userfolder = System.getProperty("user.home"); 

try (Writer writer = new BufferedWriter(new OutputStreamWriter(
       new FileOutputStream(userfolder + "opsys.txt"), "utf-8"))) 
       { 
       writer.write((String) os); 
       } catch (UnsupportedEncodingException e) 
       { 
       e.printStackTrace(); 
       } catch (FileNotFoundException e) 
       { 
       e.printStackTrace(); 
       } catch (IOException e) 
       { 
       e.printStackTrace(); 
       } 

sortie Je suis en train de réaliser:

  • 3 fichiers texte
    • nommé opsys.txt, version.txt et userhome.txt.
    • Chaque fichier contient la réponse System.getProperty appropriée.
+0

Prenez le code Writer à une fonction qui accepte 2 paramètres, la chaîne que vous voulez enregistrer et le nom de fichier. – Dez

+0

@Dez, j'apprécie la réponse et même si pour certains peut sembler simple - cela signifie que je peux maintenant aller de l'avant avec mon apprentissage! Merci!! – BlazeUK

Répondre

0

vous pouvez mettre toutes les fonctionnalités pour les fichiers d'écriture dans une méthode distincte, quelque chose comme:

private void writeFile(String fileName, String content) { 

    try (Writer writer = new BufferedWriter(new OutputStreamWriter(
      new FileOutputStream(fileName), "utf-8"))) 
    { 
     writer.write((String) content); 
    } catch (UnsupportedEncodingException e) 
    { 
     e.printStackTrace(); 
    } catch (FileNotFoundException e) 
    { 
     e.printStackTrace(); 
    } catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
} 

Après cela, votre code précédent devient quelque chose comme:

String os = System.getProperty("os.name"); 
String jv = System.getProperty("java.version"); 
String userfolder = System.getProperty("user.home"); 

//Here you call the writeFile method the number of time that you need: 
writeFile(userfolder + "opsys.txt", os); 
.... 

Avec cette approche, vous pouvez créer tous les fichiers dont vous avez besoin.

+0

merci beaucoup, cela aide beaucoup! – BlazeUK

+0

Juste pour confirmer - cela fonctionne pour moi. Merci encore Manuel! – BlazeUK

0

Vous pouvez créer une méthode simple, comme indiqué ci-dessous qui prend fileName et nom variable d'environnement comme arguments d'entrée:

public void createAndWriteFile(String fileNmae, String envName) { 
     String content = System.getProperty(envName); 
     String userfolder = System.getProperty("user.home"); 
     try (Writer writer = new BufferedWriter(new OutputStreamWriter(
         new FileOutputStream(userfolder + fileNmae), "utf-8"))) { 
     writer.write(content); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

Maintenant, appelez la méthode ci-dessus 3 fois comme indiqué ci-dessous:

String os = System.getProperty("os.name"); 
createAndWriteFile("opsys.txt",os); 
String javaVersion = System.getProperty("java.version"); 
createAndWriteFile("version.txt",javaVersion); 
String userHome = System.getProperty("user.home"); 
createAndWriteFile("userhome.txt",userHome); 
+0

merci beaucoup - cela aide beaucoup! – BlazeUK