2017-08-28 1 views
0

J'ai des problèmes avec la lecture et l'enregistrement d'un fichier .txtLire un fichier .txt sur une carte, puis l'enregistrer de nouveau en .txt?

Le fichier .txt est une liste de mots avec des mots où chaque mot ont aussi un certain nombre attaché (entier). Ainsi, ses regards comme:

hello,0 
bye,3 
maby,0 
... 

J'ai déjà une fonction créée pour lire et charger le mot avec leur nombre dans le problème est cela ne fonctionne pas pour les caractères spéciaux dont j'ai besoin parce que je suis d'Allemagne.

Chaque caractère spécial est transféré dans un ? ou un bloc vide. J'ai donc besoin d'aide pour modifier ma lecture et enregistrer la fonction pour pouvoir enregistrer et lire ä, ö, ü et ß caractères.

public void loadWordList(Map<String,Integer> map){  
    try{ 
     File toRead=new File("Wortliste.txt"); 
     FileInputStream fis=new FileInputStream(toRead); // Ist bereits in einer Try and Catch 

     Scanner sc=new Scanner(fis); 

     Map<String,String> mapInFile=new HashMap<String,String>(); 

     //read data from file line by line: 
     String currentLine; 
     while(sc.hasNextLine()){ 
      currentLine=sc.nextLine(); 
      //now tokenize the currentLine: 
      StringTokenizer st=new StringTokenizer(currentLine,",",false); 
      //put tokens ot currentLine in map 
      map.put(st.nextToken(),Integer.parseInt(st.nextToken())); 
     } 
     fis.close(); 
    }catch(Exception e){System.out.println("Wortliste konnte nicht gefunden werden");} // Ist bereits in einer Try and Catch 
} 
    //****************************************************************************** 
    //Speichern der Wordliste für Wortvorschläge   
    //****************************************************************************** 
public void saveWordList(Map<String,Integer> map){ 
    try{ 
    File fileTwo=new File("Wortliste.txt"); 
    FileOutputStream fos=new FileOutputStream(fileTwo); // Ist bereits in einer Try and Catch 
     PrintWriter pw=new PrintWriter(fos); 

     for(Map.Entry<String,Integer> m :map.entrySet()){ // Andere schreibweise 
      pw.println(m.getKey()+","+m.getValue()); 
     } 
     System.out.println("Word gespeichert"); 
     pw.flush(); 
     pw.close(); 
     fos.close(); 
    }catch(Exception e){System.out.println("Wortliste konnte nicht gespeichert werden");} // Ist bereits in einer Try and Catch 
} 
+0

J'ai toujours pensé java utilisé des chaînes Unicode - qui devrait traiter automatiquement ces caractères ... –

+0

Cela pourrait aider: https://stackoverflow.com/questions/9852978/écrire un fichier-dans-utf-8-using-fichierwriter-java –

Répondre

0

Essayez de lire le fichier comme ci-dessous:

BufferedReader in = new BufferedReader(
     new InputStreamReader(
        new FileInputStream(file), "UTF8")); 
+0

toujours la même chose ne peut pas lire les caractères spéciaux et quand j'utilise UTF-16, il a lu quelque chose – QFireball

+0

mis à jour le poste – alirabiee

+0

Version mise à jour stil wount travail avec ä, ö, ü, ß – QFireball