JAVA如何把HashMap内容输出到文本文件
来源:网络收集 点击: 时间:2024-08-14Java中我们使用流进行数据传输,就好像在数据源和目的之间建立了一条传输管道,我们可以想象一下就像水管一样。IO流根据处理数据的类型不同分为字符流和字节流,根据数据的流向不同可以分为输入流和输出流。IO流的分类可以参考下图,我们将在接下来使用这里面的类。

接下来我们创建一个TxtUtil工具类,来实现写入文本文件的方法。下面这个方法是将数据追加写入到文件文件的末尾,我们可以看到该方法有两个参数,ListString就是我们要写入的数据,因此不管是什么格式的数据我们都需要转成ListString写入,fileName是我们要写入的文件名,如果这个文件不存在的话,下面的方法中new File(fileName)会帮我们创建。以下便是使用输出了将数据写入到文件的代码,注意流在使用后一定要关闭。
/** * 数据追加写到文件末尾 * * @param dataList * @param fileName * @return */public static void appendData2File(ListString dataList, String fileName) { OutputStreamWriter out = null; FileOutputStream fos = null; try { File file = new File(fileName); if (!file.getParentFile().isDirectory()) { file.getParentFile().mkdirs(); } if (!file.exists()) { file.createNewFile(); } // 追加写入文件,且使用UTF-8格式 fos = new FileOutputStream(fileName, true); out = new OutputStreamWriter(fos, UTF-8); for (int dataIndex = 0; dataIndex dataList.size(); dataIndex++) { out.write(dataList.get(dataIndex)); 虚民 out.write(\r\n); } } catch (Exception e) { } finally { try { if (null != out) { out.flush(); out.close(); fos.close(); } } catch (IOException e) { } }}

我们在持续写入文本文件时也需要去判断文件的大小,如果文件过大的话,即便文件写入成功,打开也要等待很长时间,因此该方法还是很有必要的。
/** * 根据java.nio.*的流获取文件大小 * @param file */public static long getFileSize(File file){ FileChannel fc = null; try { if(file.exists() file.isFile()){ FileInputStream fis = new FileInputStream(file); fc = fis.getChannel(); return fc.size(); } } catch (Exception e) { e.printStackTrace(); }finally{ if(null!=fc){ try { fc.close(); } catch (IOException e) { 肤槐e.printStackTrace(); } } } return 0;}

工具类已经写完了,接下来便是如何将HashMap类型的数据写入到文本文件。我们创建一个Test类,在main方法丽罩菌中创建HashMap,并且放入一些测试数据,将HashMap中的数据转成工具类中需要的ListString类型,然后调用工具类中的方法将数据写入文件,最后打印文件的大小。
public static void main(String args) { MapString, Object map = new HashMap(); map.put(桃子, 10); map.put(香蕉, 8); map.put(西瓜, 6); ListString list = new ArrayList(); // 遍历HashMap将数据转为ListString for(Map.EntryString, Object entry : map.entrySet()) { StringBuilder s = new StringBuilder(); s.append(entry.getKey()) .append(entry.getValue()).append(元); list.add(s.toString()); } // 将数据写入到文本文件 String fileName = E:/test.txt; TxtUtil.appendData2File(list, fileName); long fileLength = TxtUtil.getFileSize( new File(fileName)); System.out.println(fileLength);}

运行上面的测试类,我们可以看到在E盘生成了test.txt文件,我们打开该文件可以看到数据已经成功写入了,同时控制台也打印输出了文件的大小,如下图所示。


注意在写入文件时如果文件或文件所在的目录没有创建,代码中一定要创建。
JAVA文件文件写入IO流文件流版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_1119679.html