Java将hashmap写入文件
以下是一种方法:Java将hashmap写入文件,java,Java,以下是一种方法: private void writeToFile() { try { String time = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime()); String name = "dictionaryFile" + time + ".txt"; File dictionaryFile = new File(nam
private void writeToFile() {
try {
String time = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
String name = "dictionaryFile" + time + ".txt";
File dictionaryFile = new File(name);
BufferedWriter writer = new BufferedWriter(new FileWriter(dictionaryFile));
Iterator<String> it = dictionary.keySet().iterator();
while (it.hasNext()){
String line = it.next();
String entryLine = line + " -> " + dictionary.get(line);
writer.write(entryLine);
writer.close();
}
} catch(Exception e)
{
e.printStackTrace();
}
}
有人能帮我解决这个问题吗?如果我只是尝试sysout打印entryLine,那么就没有错误。可能是我需要指定文件位置或类似的东西???问题是您有
writer.close()代码>在中,而循环。一旦它在第一次迭代中关闭,就不能编写任何其他内容,并且会抛出您看到的异常
在while
循环之后调用close
。如果您使用的是Java 7+,则在try
结束时使用关闭它。问题在于您有writer.close()代码>在中,而循环。一旦它在第一次迭代中关闭,就不能编写任何其他内容,并且会抛出您看到的异常
在while
循环之后调用close
。如果你使用java 7 +,那么当<<代码>尝试< /COD>结束时,使用它关闭它。 为什么你要在while循环中关闭你的流?而是:
while (it.hasNext()){
String line = it.next();
String entryLine = line + " -> " + dictionary.get(line);
writer.write(entryLine);
}
writer.close();
为什么你要在你的while循环中间关闭你的流?而是:
while (it.hasNext()){
String line = it.next();
String entryLine = line + " -> " + dictionary.get(line);
writer.write(entryLine);
}
writer.close();
不要在while循环中间关闭writer。更改您的代码如下
private void writeToFile() {
BufferedWriter writer;
try {
String time = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
String name = "dictionaryFile" + time + ".txt";
File dictionaryFile = new File(name);
writer = new BufferedWriter(new FileWriter(dictionaryFile));
Iterator<String> it = dictionary.keySet().iterator();
while (it.hasNext()) {
String line = it.next();
String entryLine = line + " -> " + dictionary.get(line);
writer.write(entryLine);
//writer.close();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (writer != null) {
writer.close();
}
}
}
private void writeToFile(){
缓冲写作者;
试一试{
字符串时间=新的SimpleDataFormat(“yyyyMMdd_HHmmss”).format(Calendar.getInstance().getTime());
String name=“dictionaryFile”+time+“.txt”;
文件字典File=新文件(名称);
writer=newbufferedwriter(newfilewriter(dictionaryFile));
迭代器it=dictionary.keySet().Iterator();
while(it.hasNext()){
String line=it.next();
字符串entryLine=line+“->”+dictionary.get(line);
writer.write(entryLine);
//writer.close();
}
}捕获(例外e){
e、 printStackTrace();
}最后{
if(writer!=null){
writer.close();
}
}
}
始终在finally块中关闭IO操作,并检查实例是否不为null。不要在while循环中间关闭writer。更改您的代码如下
private void writeToFile() {
BufferedWriter writer;
try {
String time = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
String name = "dictionaryFile" + time + ".txt";
File dictionaryFile = new File(name);
writer = new BufferedWriter(new FileWriter(dictionaryFile));
Iterator<String> it = dictionary.keySet().iterator();
while (it.hasNext()) {
String line = it.next();
String entryLine = line + " -> " + dictionary.get(line);
writer.write(entryLine);
//writer.close();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (writer != null) {
writer.close();
}
}
}
private void writeToFile(){
缓冲写作者;
试一试{
字符串时间=新的SimpleDataFormat(“yyyyMMdd_HHmmss”).format(Calendar.getInstance().getTime());
String name=“dictionaryFile”+time+“.txt”;
文件字典File=新文件(名称);
writer=newbufferedwriter(newfilewriter(dictionaryFile));
迭代器it=dictionary.keySet().Iterator();
while(it.hasNext()){
String line=it.next();
字符串entryLine=line+“->”+dictionary.get(line);
writer.write(entryLine);
//writer.close();
}
}捕获(例外e){
e、 printStackTrace();
}最后{
if(writer!=null){
writer.close();
}
}
}
始终关闭finally块中的IO操作,并检查实例是否不为null