Java中无论是将什么样的数据写入到文本文件中,都需要利用IO流去操作,我们需要利用java.io包中的类去实现,此中最主要的五个类是File、OutputStream、InputStream、Writer、Reader,我们利用OutputStream、InputStream实现字节的输入和输出操作,利用Writer、Reader去实现字符的输入和输出操作。这两组类均为抽象类,可以按照利用场景的分歧利用分歧的实现类。
东西/原料
- IntelliJ IDEA
方式/步调
- 1
Java中我们利用流进行数据传输,就仿佛在数据源和目标之间成立了一条传输管道,我们可以想象一下就像水管一样。IO流按照处置数据的类型分歧分为字符流和字节省,按照数据的流标的目的分歧可以分为输入流和输出流。IO流的分类可以参考下图,我们将在接下来利用这里面的类。
- 2
接下来我们建立一个TxtUtil东西类,来实现写入文本文件的方式。下面这个方式是将数据追加写入到文件文件的末从头至尾,我们可以看到该方式有两个参数,List<String>就是我们要写入的数据,是以不管是什么格局的数据我们都需要转当作List<String>写入,fileName是我们要写入的文件名,若是这个文件不存在的话,下面的方式中new File(fileName)会帮我们建立。以下即是利用输出了将数据写入到文件的代码,注重流在利用后必然要封闭。
/** * 数据追加写到文件末从头至尾 * * @param dataList * @param fileName * @return */public static void appendData2File(List<String> 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) { } } }
- 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; }
- 4
东西类已经写完了,接下来即是若何将HashMap类型的数据写入到文本文件。我们建立一个Test类,在main方式中建立HashMap,而且放入一些测试数据,将HashMap中的数据转当作东西类中需要的List<String>类型,然后挪用东西类中的方式将数据写入文件,最后打印文件的巨细。
public static void main(String[] args) { Map<String, Object> map = new HashMap<>(); map.put("桃子", 10); map.put("喷鼻蕉", 8); map.put("西瓜", 6); List<String> list = new ArrayList<>(); // 遍历HashMap将数据转为List<String> for(Map.Entry<String, 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);}
- 5
运行上面的测试类,我们可以看到在E盘生当作了test.txt文件,我们打开该文件可以看到数据已经当作功写入了,同时节制台也打印输出了文件的巨细,如下图所示。
注重事项
- 注重在写入文件时若是文件或文件地点的目次没有建立,代码中必然要建立。
来源:百闻(微信/QQ号:9397569),转载请保留出处和链接!
本文链接:https://www.ibaiwen.com/web/206647.html
- 上一篇: 支付宝2018年账单可以重新选择心愿吗
- 下一篇: 大鱼号发布视频方法
- 热门文章
-
WB蒙特利尔(WB Montreal)——欧美十大最差视频游戏开发商
迅猛龙(Velociraptor)——欧美史前十大死亡动物
什么是果酱猫(What Marmalade Cats)?
神奇蜘蛛侠2(The Amazing Spider-Man 2)——欧美最佳蜘蛛侠电影
希瑟(Heather)——欧美十大最佳柯南灰歌
二人梭哈
奥兹奥斯本(Ozzy Osbourne)——欧美十大高估歌手
什么是小脑前下动脉(Anterior Inferior Cerebellar Artery)?
我应该知道康涅狄格州的什么(What Should I Know About Connecticut)?
faceu激萌怎么把瘦脸开到最大
- 热评文章
- 最新评论
-
- 最近访客
-
- 站点信息
-
- 文章总数:200248
- 页面总数:9
- 分类总数:1
- 标签总数:0
- 评论总数:0
- 浏览总数:497