将 .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 文件以在下次运行时读取它