java将hashmap写入文件_JAVA如何把HashMap内容输出到文本文件

1

Java中我们利用流进行数据传输,就仿佛在数据源和目标之间成立了一条传输管道,我们可以想象一下就像水管一样。IO流按照处置数据的类型分歧分为字符流和字节省,按照数据的流标的目的分歧可以分为输入流和输出流。IO流的分类可以参考下图,我们将在接下来利用这里面的类。

b3d0142d4ddb69464f175ad03ae017e1.png

2

接下来我们建立一个TxtUtil东西类,来实现写入文本文件的方式。下面这个方式是将数据追加写入到文件文件的末从头至尾,我们可以看到该方式有两个参数,List就是我们要写入的数据,是以不管是什么格局的数据我们都需要转当作List写入,fileName是我们要写入的文件名,若是这个文件不存在的话,下面的方式中new File(fileName)会帮我们建立。以下即是利用输出了将数据写入到文件的代码,注重流在利用后必然要封闭。

/**   * 数据追加写到文件末从头至尾   *   * @param dataList   * @param fileName   * @return   */public static void appendData2File(List 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) {          }      }  }

b047bd6f3c2a499a97d25bcd3af0e5d4.png

3

我们在持续写入文本文件时也需要去判定文件的巨细,若是文件过年夜的话,即便文件写入当作功,打开也要期待很长时候,是以该方式仍是很有需要的。

/**   * 按照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;  }

eb51bff425778d7d0de8437e67f05649.png

4

东西类已经写完了,接下来即是若何将HashMap类型的数据写入到文本文件。我们建立一个Test类,在main方式中建立HashMap,而且放入一些测试数据,将HashMap中的数据转当作东西类中需要的List类型,然后挪用东西类中的方式将数据写入文件,最后打印文件的巨细。

public static void main(String[] args) {    Map map = new HashMap<>();    map.put("桃子", 10);    map.put("喷鼻蕉", 8);    map.put("西瓜", 6);    List list = new ArrayList<>();    // 遍历HashMap将数据转为List    for(Map.Entry 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);}

b79ab5b73a426a304d5b8a2c7cf4ad39.png

5

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

0d89579773d9925a47478be3cd789504.png

cc21020d63281c9f08470feec2034744.png

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值