将 .txt 文件读取到地图中,然后将其再次保存为 .txt?

Posted

技术标签:

【中文标题】将 .txt 文件读取到地图中,然后将其再次保存为 .txt?【英文标题】:Reading a .txt file to a map and then save it again as .txt? 【发布时间】:2017-08-28 16:17:34 【问题描述】:

我在读取和保存.txt 文件时遇到了一些问题

.txt 文件是一个单词列表,其中每个单词都有一个附加的数字(整数)。所以它看起来像:

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

我已经创建了一个函数来读取和加载带有数字的单词,问题是这不适用于我需要的特殊字符,因为我来自德国。

每个特殊字符都被传输到? 或空块中。所以我需要一些帮助来修改我的读取和保存功能,以便能够保存和读取äöüß 字符。

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

【问题讨论】:

我一直认为 java 使用的是 Unicode 字符串——它应该自动处理这些字符... 这可能会有所帮助:***.com/questions/9852978/… 【参考方案1】:

尝试如下读取文件:

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

【讨论】:

仍然无法读取特殊字符,当我使用 UTF-16 时,他不会读取任何内容 也许你可以上传一个示例文件? 示例文件是什么意思?我设法让它使用以下方法读取特殊字符: Charset inputCharset = Charset.forName("ISO-8859-1"); InputStreamReader isr = new InputStreamReader(fis, inputCharset);但是我有一个问题,他只是从 .txt 文件中读取 104 行而不是全部 424

以上是关于将 .txt 文件读取到地图中,然后将其再次保存为 .txt?的主要内容,如果未能解决你的问题,请参考以下文章

从 txt 文件中读取数据并将其添加到 Observable 集合中

从文件中读取元组列表/将数据保存到文件

将 Interactive JTable 的内容保存到 .txt 文件以在下次运行时读取它

如何将更改保存到现有的 excel 文件,而不是创建包含更改的 txt 文件?

matlab读取txt文件中的数据存为矩阵

将 txt 文件合并为一个文件,然后再次拆分它们