java面试题之使用IO字符流操作文本文件
来源:互联网 发布:西门子840d编程手册 编辑:程序博客网 时间:2024/06/01 08:58
1.将一个文本文档上的文本反转,第一行和倒数第一行交换,第二行和倒数第二行交换
/** * 将一个文本文档上的文本反转,第一行和倒数第一行交换,第二行和倒数第二行交换 * 使用高效字符流按行读取,然后放入集合中,倒着遍历集合,将读取的内容输出到文本中 */ @Test public void reversalFile(){ BufferedReader reader = null; BufferedWriter writer = null; try { String sourceFileUrl = "C:\\Users\\admin\\Desktop\\testIO\\a.txt"; String targetFileUrl = "C:\\Users\\admin\\Desktop\\testIO\\b.txt"; reader = new BufferedReader(new FileReader(sourceFileUrl)); writer = new BufferedWriter(new FileWriter(targetFileUrl)); ArrayList<String> list = new ArrayList<>(); String line; while ((line=reader.readLine())!=null){ list.add(line); } //反向遍历集合,输出内容 for (int i=list.size()-1; i>=0;i--){ writer.write(list.get(i)); writer.newLine(); } }catch (Exception e){ e.printStackTrace(); }finally { //在finally中关闭开启的流 if (reader!=null){ try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } if (writer!=null){ try { writer.close(); } catch (IOException e) { e.printStackTrace(); } } } }
2.获取一个文本上每个字符出现的次数,将结果写在b.txt上
/** * 获取一个文本上每个字符出现的次数,将结果写在b.txt上 */ @Test public void statCharCountInFile(){ BufferedReader reader = null; BufferedWriter writer = null; try { String sourceFileUrl = "C:\\Users\\admin\\Desktop\\testIO\\a.txt"; String targetFileUrl = "C:\\Users\\admin\\Desktop\\testIO\\b.txt"; reader = new BufferedReader(new FileReader(sourceFileUrl)); writer = new BufferedWriter(new FileWriter(targetFileUrl)); Map<Character,Integer> map = new TreeMap<>(); int c; while ((c=reader.read())!=-1){ //将读取到的内容强转为char类型,判断map集合中是否已存在,存在,value+1,不存在,value初始化为1 char key = (char) c; map.put(key, map.containsKey(key) ? map.get(key) + 1 : 1); } //遍历集合,将结果写入b.txt中,注入特殊字符转换 for (Character key : map.keySet()) { switch (key){ case '\t': writer.write("\\t出现了:"+map.get(key)+"次"); break; case '\r': writer.write("\\r出现了:"+map.get(key)+"次"); break; case '\n': writer.write("\\n出现了:"+map.get(key)+"次"); break; default: writer.write(key+"出现了:"+map.get(key)+"次"); } writer.newLine(); } }catch (Exception e){ e.printStackTrace(); }finally { //在finally中关闭开启的流 if (reader!=null){ try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } if (writer!=null){ try { writer.close(); } catch (IOException e) { e.printStackTrace(); } } } }
阅读全文
0 1
- java面试题之使用IO字符流操作文本文件
- Java IO 字符流 复制文本文件
- Java IO流面试题
- java io流的使用之字节流与字符流的操作
- Java IO操作之字节流和字符流
- java IO总结之字符流操作控制台输入输出(高效)
- java IO总结之字符流操作文件读写
- java-IO操作-使用字符流读写数据
- java IO流面试题和选择题
- 使用Java操作文本文件
- 使用java操作文本文件
- 使用Java操作文本文件
- C# 文本文件操作 IO流
- C# 文本文件操作 IO流
- Java IO之字符流
- Java IO之字符流
- IO流面试题
- IO流面试题
- C#基础之 简单计算
- Laravel 利 用事件广播和pusher开发实时通知系统的
- Redis 安装(Windows和Linux )
- Z-Wave Multi Channel overview
- GZIP文件格式简介
- java面试题之使用IO字符流操作文本文件
- ZooKeeper-ExpiryQueue详解
- Android知识图谱
- jar javac javadoc javah分别是什么?
- python中访问限制
- HDU 6178 && 2017 多校训练:Monkeys(DFS)
- begin
- 【安卓学习笔记】JAVA基础Lesson3-面向对象和类
- Android输入系统笔记