学习Java小结
来源:互联网 发布:武汉国企java招聘信息 编辑:程序博客网 时间:2024/06/07 20:38
学习Java小结-1
学习Java也有近一个月了,基础语法、常用类也有所了解。上周把文件相关操作进行了一个总结,制作了一个简单的文件常用操作的工具类。此处详解文件的拷贝与移动
工具类包含了容下功能的实现:
1、 拷贝文件
2、 移动文件
3、 遍历文件夹
4、 获取文件夹内所有文件
5、 文件打包与解包
下面来看一下功能的具体实现
1、拷贝文件
思路:将源文件的内容读取到内存中,然后在写入到目标文件中即可
由于要实现任意文件的拷贝,选用Java二进制输入(DataInputStream)输出(DataOutputStream)流,还要支持任意大小的文件的拷贝,因此采用缓冲循环读取写入方式。具体看代码:
/*** 文件拷贝* * @param srcFile* 源文件绝对路径的文件对象* @param destFile* 目标文件绝对路径的文件对象* @return 成功拷贝返回true,否则为false*/public static boolean copyFile(File srcFile, File destFile) { //文件拷贝结果 boolean flag = false; //判断一下源文件是否存在,增加方法的安全性 if (srcFile.exists()) { try { //假如源文件是一个目录,则直接创建目录,仅支持文件的拷贝 if (!srcFile.isDirectory()) { //创建目标文件的父级目录 destFile.getParentFile().mkdirs(); //创建文件输入流 绑定源文件 FileInputStream in = new FileInputStream(srcFile); //创建二进制输入流,支持拷贝任意类型的文件 DataInputStream srcIn = new DataInputStream(in); //创建对应的输出流、二进制输出流 绑定输出文件 FileOutputStream out = new FileOutputStream(destFile); DataOutputStream desOut = new DataOutputStream(out); //因为文件大小不定,使用缓冲方式读入数据。每次最多读取4096byte //实际读取长度为length int length = 0; byte[] readBuffer = new byte[4096]; //循环读取,直到文件末尾 srcIn.read(readBuffer)返回-1 while ((length = srcIn.read(readBuffer)) != -1) { //安装实际读取长度写入目标文件 desOut.write(readBuffer, 0, length); } //刷新输出流,将数据保存到目标文件中 desOut.flush(); //文件拷贝完毕,关闭输出、输入流 desOut.close(); in.close(); srcIn.close(); flag = true; } else { destFile.mkdirs(); flag = true; } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } else { System.out.println(srcFile.getAbsolutePath() + "不存在"); } return flag; }
2、文件移动
思路:将源文件内容读取到内存中,写入目标文件后删除源文件
在功能1的基础上实现源文件的删除即可。注:此方法仅能移动空文件夹
/** * 移动文件 * * @param srcFile * 源文件绝对路径的文件对象 * @param destFile * 目标文件绝对路径的文件对象 * @return 成功移动返回true,否则为false */ public static boolean moveFile(File srcFile, File destFile) { //调用已经实现的文件拷贝方法 boolean flag = copyFile(srcFile, destFile); //如果已经成功拷贝文件,则删除源文件 if (flag) { srcFile.delete(); } return flag; }
阅读全文
0 0
- Java学习小结
- Java”方法“学习小结
- JAVA RMI学习小结
- Java学习小结
- java学习小结
- JAVA学习小结
- JAVA学习小结
- UserHandle.java学习小结
- Java线程学习小结
- Java基本学习小结
- Java Swing学习小结
- JAVA SE学习小结
- java IO学习小结
- Java Iterator学习小结
- Java继承学习小结
- Java多线程学习小结
- java学习小结 11.9
- 学习 Java UDP 小结
- 古文觀止卷九_捕蛇者說_柳宗元
- OpenCV检测圆并求出圆心与半径
- caffe目标检测踩坑记(三)
- 最大熵阈值分割法
- 使用IntelliJ IDEA编写自己的第一个java程序
- 学习Java小结
- MYSQL数据库 初学笔记2
- mark一下, 我的csdn博客超过5万分啦
- Java安装配置环境变量及介绍数据类型
- Til the Cows Come Home(poj 2387 Dijkstra算法)
- java四大引用
- 机器学习常见的算法面试题总结
- Vue + ElementUI 手撸后台管理网站基本框架(零)前言篇
- Rup(Rationl Unifide Process)