我正在一个项目中,我有一个文件,程序可以访问该文件来获取多年以来不同犯罪的信息。然后,它需要根据类型将犯罪加在一起,并将其放入文件中。我有第一部分内容,它可以访问文件并按类型累加犯罪金额,但是当我打开创建的文件时,它无法正确打印出来,而且我似乎找不到任何问题。
这是打印在文件上的内容:
¬ísrjava.util.HashMapÚÁÃ`ÑF loadFactorI thresholdxp?@ w
t暴力犯罪Totalsrjava.lang.Integerä÷‡8 I valuexr java.lang.Number†¬•“à‹xp¤MtRapesq〜jt 车辆盗窃〜{™t加重突袭q〜k凶杀案q〜Robberysq〜N t非住宅盗窃案〜kÿt住宅盗窃案〜ãt财产犯罪总数〜盗窃案〜:cx
使用system.out.println打印:
{暴力犯罪总数= 42061,强奸= 1898,车辆盗窃= 97177,严重袭击= 27523,凶杀= 399,抢劫= 19981,非住宅盗窃= 27647,住宅盗窃= 58238,财产犯罪总数= 454505,盗窃= 342627}
我要在文件中显示的系统打印出来。
public class CSVReader {
public static void main(String[] args) throws FileNotFoundException {
String csvFile = "C:\\Users\\Cassie\\Desktop\\mod04_dataset.csv";
BufferedReader br = null;
String line = "";
String cvsSplitBy = ",";
HashMap<String, Integer> map = new HashMap<>();
try {
br = new BufferedReader(new FileReader(csvFile));
br.readLine();
while ((line = br.readLine()) != null) {
String[] data = line.split(cvsSplitBy);
System.out.println(data[2] + " " + data[3]);
if (map.containsKey(data[2])) {
Integer a = map.get(data[2]);
map.put(data[2], a + Integer.parseInt(data[3]));
}
else {
map.put(data[2], Integer.parseInt(data[3]));
}
}
FileOutputStream f = new
FileOutputStream("hashmap.ser");
ObjectOutputStream s = new ObjectOutputStream(f);
s.writeObject(map);
System.out.println(map);
s.close();
f.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
答案 0 :(得分:0)
致电System.out.println(map);
时,您会看到map.toString()
的结果。如果这是文件中要包含的内容,则可以这样操作:
FileOutputStream f = new FileOutputStream("hashmap.ser");
f.write(map.toString().getBytes());
System.out.println(map);
f.close();
答案 1 :(得分:0)
您应该使用PrintWriter,因为您正在输出二进制数据