迭代 HashMap 然后将整数写入文件
Iterating over HashMap then writing integers into file
我已经尝试了很长一段时间来遍历 HashMap,然后将 HashMap 中的键写入文件。
这就是我一直在做的事情
HashMap<String,Integer> myHashMap = new Hashmap<String,Integer>();
myHashMap.put(aString,1)
myHashMap.put(bString,2)
myHashMap.put(cString,3)
//..
private void doStuff(){
try {
// Create new file
String path = "myCreatedTxt.txt";
File file = new File(path);
// If file doesn't exists, then create it
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
for (Map.Entry<String,Integer> dic : myHashMap.entrySet())
{
System.out.println(dic.getKey() + "/" + dic.getValue());
bw.write(dic.getKey()+"");
}
// Close connection
bw.close();
} catch (IOException x) {
System.out.println(x);
}
}
但是当调用doStuff()时,虽然创建了一个名为myCreatedTxT的文件,但它是空的。
我希望得到的结果类似于:
---inside myCreatedFile.txt---
1 11 4 2 5 6 7
在我只能在文件上写入一个密钥之前尝试过的一种方式,但这还不够,因为我需要每个密钥。
我想听听一些建议或解释
谢谢。
P.S 当然,doStuff() 在程序的某个地方的 finally{} 块中被调用。
我为这个例子创建了 Writer
class :
public class Writer {
private Map<String, Integer> myHashMap;
public Writer() {
myHashMap = new HashMap<>();
myHashMap.put("a", 1);
myHashMap.put("b", 2);
myHashMap.put("c", 3);
}
public void doStuff() {
try {
// Create new file
final String path = "myCreatedTxt.txt";
File file = new File(path);
// If file doesn't exists, then create it
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
myHashMap.entrySet().forEach(x -> {
try {
bw.write(x.getKey() + " ");
} catch (IOException e) {
System.out.println("error accord");
}
});
// Close connection
bw.close();
} catch (IOException x) {
System.out.println(x);
}
}
}
并从我的 main
class 调用它:
public class Main {
public static void main(String[] args) {
Writer writer = new Writer();
writer.doStuff();
}
}
我的输出文件看起来完全一样:
a b c
这应该可以完成工作
我已经尝试了很长一段时间来遍历 HashMap,然后将 HashMap 中的键写入文件。
这就是我一直在做的事情
HashMap<String,Integer> myHashMap = new Hashmap<String,Integer>();
myHashMap.put(aString,1)
myHashMap.put(bString,2)
myHashMap.put(cString,3)
//..
private void doStuff(){
try {
// Create new file
String path = "myCreatedTxt.txt";
File file = new File(path);
// If file doesn't exists, then create it
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
for (Map.Entry<String,Integer> dic : myHashMap.entrySet())
{
System.out.println(dic.getKey() + "/" + dic.getValue());
bw.write(dic.getKey()+"");
}
// Close connection
bw.close();
} catch (IOException x) {
System.out.println(x);
}
}
但是当调用doStuff()时,虽然创建了一个名为myCreatedTxT的文件,但它是空的。
我希望得到的结果类似于:
---inside myCreatedFile.txt---
1 11 4 2 5 6 7
在我只能在文件上写入一个密钥之前尝试过的一种方式,但这还不够,因为我需要每个密钥。
我想听听一些建议或解释
谢谢。
P.S 当然,doStuff() 在程序的某个地方的 finally{} 块中被调用。
我为这个例子创建了 Writer
class :
public class Writer {
private Map<String, Integer> myHashMap;
public Writer() {
myHashMap = new HashMap<>();
myHashMap.put("a", 1);
myHashMap.put("b", 2);
myHashMap.put("c", 3);
}
public void doStuff() {
try {
// Create new file
final String path = "myCreatedTxt.txt";
File file = new File(path);
// If file doesn't exists, then create it
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
myHashMap.entrySet().forEach(x -> {
try {
bw.write(x.getKey() + " ");
} catch (IOException e) {
System.out.println("error accord");
}
});
// Close connection
bw.close();
} catch (IOException x) {
System.out.println(x);
}
}
}
并从我的 main
class 调用它:
public class Main {
public static void main(String[] args) {
Writer writer = new Writer();
writer.doStuff();
}
}
我的输出文件看起来完全一样:
a b c
这应该可以完成工作