0

マップの配列リストがあり、各マップのキーをパイプ (|) で区切られたファイルに書き込む必要があります。次の行の次のマップのキーなど。ファイル操作に慣れていません。私を助けてください

編集-私がしたことを含めなくてごめんなさい、私は次のことをしました、そしてそれは行ごとに書いていません、多くの空白行が間にあります

if(alPrdt.size()>0)
{
    if (!file.exists()) {
        System.out.println("no file. creating new file");
        file.createNewFile();
    }
    fw = new FileWriter(file.getAbsoluteFile(),true);
    bw = new BufferedWriter(fw);
    //s.writeObject(alPrdt);
    for(int i=0;i<alPrdt.size();i++)
    {
        String temp = null;
        Map map=(Map) alPrdt.get(i);
        Iterator it=map.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry pairs = (Map.Entry)it.next();
            System.out.println("pairs:"+pairs.toString());
            if(pairs.getValue()==null)
                temp = "";
            else
                temp = pairs.getValue().toString();

            bw.write(temp);
            bw.write("|");
            it.remove();// avoids a ConcurrentModificationException
       }
       bw.write("\n");

    }
    bw.close();
}
4

2 に答える 2

1

このファイルにキーのみが必要な場合は、おそらく次のようになります。

    String pathToFile = "C:\\temp\\file.txt";
    try (BufferedWriter bw = new BufferedWriter(new FileWriter(pathToFile))) {
        for (Map<String, String> map : mapList) {
            Iterator<String> it = map.keySet().iterator();
            while (it.hasNext()) {
                bw.write(it.next());
                if (it.hasNext()) {
                    bw.write("|");
                }
                it.remove();
            }
            bw.write(System.lineSeparator());
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
于 2013-10-29T13:19:06.870 に答える
1

Java 7 はjava.nio.file.Files、リスト項目が行を表すファイルにリストを変換する必要があります。

Files.write(Paths.get("C:\\temp\\file.txt"), lines, StandardCharsets.UTF_8);

どこlinesですかList<String>

だから、(確かに)キーを抽出することで簡単List<Map>に変換できます。List<String>

それがあなたを助けることを願っています

于 2013-10-29T13:27:01.407 に答える