IO流 | IO流的应用举例
1.将源文件路径下内容拷贝到目的路径文件中
/*** 源文件路径拷贝到目的路径文件中* @param srcFile 源文件* @param desFile 目的文件(目录/文件)*/
public static void copyFile(String srcFile,String desFile){FileInputStream inputStream=null;FileOutputStream outputStream=null;File file1 = new File(desFile);try {inputStream = new FileInputStream(srcFile);outputStream = new FileOutputStream(desFile);byte[] bytes = new byte[100];int len;while((len=inputStream.read(bytes))!=-1){outputStream.write(bytes,0,len);}} catch (IOException e) {e.printStackTrace();} finally {//关闭资源try {if (inputStream != null) {inputStream.close();}if (outputStream != null) {outputStream.close();}} catch (IOException e) {e.printStackTrace();}}
}
运行结果:
2.将数据插入到文件的指定位置
/*** 数据插入到文件的指定位置* @param srcFile 源文件* @param index 源文件内容要插入的位置* @param append 需要插入的内容*/
public static void addContent(String srcFile,int index,String append){try {//将随机访问文件设置为可读可写属性RandomAccessFile accessFile = new RandomAccessFile(srcFile, "rw");//定义临时文件:存储插入位置后的内容String path="C:\\Users\\1\\Desktop\\test.txt";FileOutputStream file = new FileOutputStream(path);FileInputStream file1 = new FileInputStream(path);//将指针偏移至index位置处accessFile.seek(index);//5//确定指针位置System.out.println("偏移后指针位置在"+accessFile.getFilePointer());//将指针后的内容写入file中byte[] bytes = new byte[5];int read = accessFile.read(bytes, 0, 5);System.out.println("临时文件内容为:"+new String(bytes,0,read));file.write(bytes);//重新偏移指针,并添加数据accessFile.seek(index);accessFile.write(append.getBytes());//记录此时指针位置System.out.println("添加数据后指针位置在"+accessFile.getFilePointer());//将file文件内容拼接写入AccessFile中byte[] bytes2 = new byte[14];file1.read(bytes2);accessFile.write(bytes2);//指针回退accessFile.seek(0);byte[] bytes1 = new byte[14];int read1 = accessFile.read(bytes1);System.out.println("插入数据后,文件内容为:");System.out.println(new String(bytes1,0,read1));//helloniceworldfile.close();file1.close();accessFile.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}
}
运行结果及文件内容显示:
3.读取文件,求出现次数最少的5组数据
public static void readFile(String path){try {//创建字符输入缓冲流实例FileReader reader = new FileReader(path);BufferedReader br = new BufferedReader(reader);//将数据写入用户空间的缓冲区ArrayList<Integer> arrayList = new ArrayList<>();String str;int i;//向ArrayList中添加数据,添加原则:依次读取每行数据,以","分割while((str=br.readLine())!=null){String[] s=str.split(",");for(i=0;i<s.length;i++) {arrayList.add(Integer.valueOf(s[i]));}}//hashMap统计出现的次数HashMap<Integer, Integer> hashMap = new HashMap<>();Iterator<Integer> iterator = arrayList.iterator();while(iterator.hasNext()){Integer next=iterator.next();if(hashMap.containsKey(next)){hashMap.put(next,hashMap.get(next)+1);}else{hashMap.put(next,1);}}Comparator<Map.Entry<Integer, Integer>> com = new Comparator<Map.Entry<Integer, Integer>>() {//重写compare方法 要求:比较节点value值 从小到大@Overridepublic int compare(Map.Entry<Integer, Integer> o1, Map.Entry<Integer, Integer> o2) {return o2.getValue() - o1.getValue();}};//将节点放入优先级队列中,获取最小的5个PriorityQueue<Map.Entry<Integer, Integer>> queue = new PriorityQueue<>(5,com);//大根堆Iterator<Map.Entry<Integer, Integer>> iterator1 = hashMap.entrySet().iterator();while(iterator1.hasNext()){Map.Entry<Integer, Integer> entry = iterator1.next();if(queue.size()<5){queue.add(entry);}else{Map.Entry<Integer, Integer> entry1=queue.peek();//取出队顶元素,即队列中的最小值//当前元素value值小于队顶元素if(entry.getValue()<entry1.getValue()){queue.poll();//删除队顶queue.add(entry);//此时entry为queue的队顶元素}}}System.out.println("出现次数最少的5组数据如下");Iterator<Map.Entry<Integer, Integer>> iterator2 = queue.iterator();while(iterator2.hasNext()){Map.Entry <Integer, Integer> entry = iterator2.next();System.out.println(entry.getKey()+":"+entry.getValue());}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}
}
运行结果:
IO流 | IO流的应用举例相关推荐
- Java笔记整理六(File类,递归,字节流IO,字符流IO,流中的异常处理,属性集Properties,缓冲流,转换流,序列化,打印流)
1.File类 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 文件和目录路径名的抽象表示 java把文件和文件夹封装位为一个File类,我们可 ...
- Java基础19:IO流—缓冲流、转换流、序列化、打印流、压缩流和解压流
IO流中的一些其他流:缓冲流.转换流.序列化.打印流.压缩流和解压流 1. 缓冲流 IO流除了一些基本的流,还有在此基础上发展出来的一些更强大的流.比如能够高效读写的缓冲流,能够转换编码的转换流,能够 ...
- IO流 字符流 字节流 缓冲流 文件的复制
IO流 IO概述 IO流就是一个管道,是用来在设备之间传输数据 input:相对于内存/程序 往进走输入流 output:相对于内存/程序 往硬盘写入 分类 根据数据进出方式 1.输出流: FileW ...
- Java基础学习总结(13)——流IO
2019独角兽企业重金招聘Python工程师标准>>> 一.JAVA流式输入/输出原理 流是用来读写数据的,java有一个类叫File,它封装的是文件的文件名,只是内存里面的一个对象 ...
- Java基础知识强化之IO流笔记41:字符流缓冲流之复制文本文件案例02(使用 [ newLine() / readLine() ] )(重要)...
1. 使用字符流缓冲流的特殊功能 [ newLine() / readLine() ] 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中 数据源: a.txt -- 读取数据 ...
- IO流(IO异常处理方式)
IO流(IO异常处理方式) 参考文章: (1)IO流(IO异常处理方式) (2)https://www.cnblogs.com/yangyongqian/p/5150838.html 备忘一下.
- java 马士兵 io 代码分析_学习笔记-马士兵java- (IO初步)流
1. Java 流式输入/输出原理: a. 在JAVA程序中,对于数据的输入/输出操作以"流"(stream)方式进行:J2SDK 提供了各种各样的"流"类,用 ...
- JAVA语言基础-面向对象(IO:IO字符流、递归)
2019独角兽企业重金招聘Python工程师标准>>> 21.01_IO流(字符流FileReader) 1.字符流是什么 字符流是可以直接读写字符的IO流 字符流读取字符, 就要先 ...
- Java IO: 其他字符流(下)
转载自 Java IO: 其他字符流(下) 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本小节会简要概括Java IO中的PushbackRe ...
- 让你的数据和对象有源有出路,一文打尽,Java常用IO流处理流(处理字节流文件流)缓冲流、转换流、对象流等
文章目录 缓冲流 转换流 标准输入输出流 打印流 数据流 对象流 随机存取文件流 Java NIO 缓冲流 为了提高数据读写的速度,Java API提供了带缓冲功能的流类,在使用这些流类时,会创建一个 ...
最新文章
- catkin_make: command not found
- 程序员硬核宝典(面试题集、在线免费工具箱)
- Boost:系统测试的实例
- HashMap是如何工作的
- 【HDU - 5456】Matches Puzzle Game(数位dp,思维)
- 这几天惨遭Delphi类型转换折磨,请问怎么把double转成int类型
- pycharm设置开发模板
- JSF MVC 流程
- CENTOS 7 YUM 没有可用的软件包 NGINX
- 如何在乌版图系统添加拼音输入法!
- 折线图_R语言画折线图?
- 动态瑜伽 静态瑜伽 初学者_使用计算机视觉对瑜伽姿势进行评分
- 联想电脑尺寸在哪里看_联想笔记本电脑型号查看方式、含义介绍【图文教程】...
- 【网络编程】【SCTP】SCTP协议介绍,四次握手,三次挥手
- JavaScript刷新当前页面的五种方式
- PAT 1044 火星数字
- 案例:自动复制黏贴bat
- 将分开的微服务项目合到一个项目下面
- Linux系统之Xinetd服务
- Java计算机毕业设计电影票网上订票系统源码+系统+数据库+lw文档