关于文件属性(Java)
1、编写一个程序,指定一个文件夹,能自动计算出其总容量
import java.io.File;
import java.util.ArrayList; public class FileAction {
ArrayList<File> fileList;
File root; public FileAction(String pathName) {
root = new File(pathName);
fileList = new ArrayList<>();
} public void searchFiles() {
File[] files = root.listFiles();
int length = files.length;
for (int i = 0; i < length; i++) {
if (files[i].isDirectory()) {
root = files[i];
searchFiles();
} else {
fileList.add(files[i]);
}
}
} public void countFiles() {
long totalSize = 0;
System.out.println("文件数:" + fileList.size());
for (int i = 0; i < fileList.size(); i++) {
totalSize += fileList.get(i).length();
}
System.out.println("文件总大小:" + totalSize);
} public static void main(String[] args) {
String pathName = "E:\\音乐";
FileAction counter = new FileAction(pathName);
counter.searchFiles();
counter.countFiles();
} }
2、编写一个文件加解密程序,通过命令行完成加解密工作
package file_attribute_analysis; import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream; public class FileAction {
private static final int numOfEncAndDec=0x99;//加密解密密钥
private static int dataOfFile=0;//文件字节内容 public static void main(String[] args) {
File srcFile=new File("G:\\encryption_text.txt");//初始化文件
File encFile=new File("G:\\encryption_text01.txt"); //加密文件
File decFile=new File("G:\\encryption_text02.txt"); //解密文件 try {
EncFile(srcFile,encFile); //加密操作
DecFile(encFile,decFile);
}catch(Exception e) {
e.printStackTrace();
}
}
private static void EncFile(File srcFile,File encFile)throws Exception{
if(!srcFile.exists()) {
System.out.println("source file not exixt");
}
if(!encFile.exists()) {
System.out.println("encrypt file created");
encFile.createNewFile();//若无加密文件,新建一个加密文件
}
InputStream fis=new FileInputStream(srcFile);
OutputStream fos=new FileOutputStream(encFile); while((dataOfFile=fis.read())>-1) {//当读到文件内容时
fos.write(dataOfFile^numOfEncAndDec);//将读出的内容加密后写入
}
fis.close();
fos.flush();
fos.close();
}
private static void DecFile(File encFile,File decFile)throws Exception{
if(!encFile.exists()) {
System.out.println("encrypt file not exixt");
}
if(!decFile.exists()) {
System.out.println("decrypt file created");
decFile.createNewFile();
}
InputStream fis=new FileInputStream(encFile);
OutputStream fos=new FileOutputStream(decFile); while((dataOfFile=fis.read())>-1) {
fos.write(dataOfFile^numOfEncAndDec);
}
fis.close();
fos.flush();
fos.close();
}
}
加密前:
加密后;
解密后:
3、编写一个文件分割工具,能把一个大文件分割成多个小的文件。并且能再次把它们合并起来得到完整的文件
1.分割文件:
1 import java.io.File;
2 import java.io.FileInputStream;
3 import java.io.FileNotFoundException;
4 import java.io.FileOutputStream;
5 import java.io.IOException;
6
7
8 public class CutFile {
9 public static void main(String[] args) {
10 //调用cutFile()函数 传人参数分别为 (原大文件,切割后存放的小文件的路径,切割规定的内存大小)
11 cutFile("D:\\file\\file.txt", "D:\\file2",1024 * 1024 * 20);
12 }
13
14 private static void cutFile(String src, String endsrc, int num) {
15 FileInputStream fis = null;
16 File file = null;
17 try {
18 fis = new FileInputStream(src);
19 file = new File(src);
20 //创建规定大小的byte数组
21 byte[] b = new byte[num];
22 int len = 0;
23 //name为以后的小文件命名做准备
24 int name = 1;
25 //遍历将大文件读入byte数组中,当byte数组读满后写入对应的小文件中
26 while ((len = fis.read(b)) != -1) {
27 //分别找到原大文件的文件名和文件类型,为下面的小文件命名做准备
28 String name2 = file.getName();
29 int lastIndexOf = name2.lastIndexOf(".");
30 String substring = name2.substring(0, lastIndexOf);
31 String substring2 = name2.substring(lastIndexOf, name2.length());
32 FileOutputStream fos = new FileOutputStream(endsrc + "\\\\"+ substring + "-" + name + substring2);
33 //将byte数组写入对应的小文件中
34 fos.write(b, 0, len);
35 //结束资源
36 fos.close();
37 name++;
38 }
39 } catch (FileNotFoundException e) {
40 e.printStackTrace();
41 } catch (IOException e) {
42 e.printStackTrace();
43 } finally {
44 try {
45 if (fis != null) {
46 //结束资源
47 fis.close();
48 }
49 } catch (IOException e) {
50 e.printStackTrace();
51 }
52 }
53 }
54 }
实现结果截图:
未操作前:
分割后:
文件的集合:
1 package class6;
2
3 import java.io.File;
4 import java.io.FileInputStream;
5 import java.io.FileNotFoundException;
6 import java.io.FileOutputStream;
7 import java.io.IOException;
8
9 public class GotherFile {
10 public static void main(String[] args){
11 //调用togetherFile()函数合并小文件到大文件 参数列表分别为 (小文件所在的父文件夹路径,所合成的大文件的路径)
12 togetherFile("D:\\file2","D:\\file3\\file.txt");
13 }
14 private static void togetherFile(String src, String endsrc){
15 FileOutputStream fos = null;
16 File file1 = null;
17 File file2 = null;
18 try {
19 file1 = new File(endsrc);
20 file2 = new File(src);
21 //获得大文件的存储路径的FileOutputStream对象
22 fos = new FileOutputStream(endsrc);
23 //循环遍历对应文件夹中的所有小文件
24 for(File file : file2.listFiles()){
25
26 FileInputStream fis = new FileInputStream(file.getAbsolutePath());
27
28 byte[] b = new byte[1024*1024];
29 int len = 0;
30 //将小文件读入byte数组,之后再将byte数组写入大文件中
31 while((len = fis.read(b)) != -1){
32 fos.write(b, 0, len);
33 }
34 //结束资源
35 fis.close();
36 }
37 } catch (FileNotFoundException e) {
38 e.printStackTrace();
39 } catch (IOException e) {
40 e.printStackTrace();
41 }finally{
42 try {
43 if(fos != null){
44 //结束资源
45 fos.close();
46 }
47 } catch (IOException e) {
48 e.printStackTrace();
49 }
50 }
51 }
52 }
操作前:
集合操作后:
关于文件属性(Java)的更多相关文章
- Java核心技术梳理-IO
一.引言 IO(输入/输出),输入是指允许程序读取外部数据(包括来自磁盘.光盘等存储设备的数据).用户输入数据.输出是指允许程序记录运行状态,将程序数据输出到磁盘.光盘等存储设备中. IO的主要内容包 ...
- Java的Path、Paths和Files
前言 因为这几天被java.nio的这几个接口和工具类卡到了,就顺便地查了一波文档以及使用方法,这篇其实更像是API的复制粘贴,只不过我在注释里多写了一些output和注意事项,看不惯API的可以选择 ...
- (私人收藏)[开发必备]最全Java离线快速查找手册(可查询可学习,带实例)
(私人收藏)[开发必备]最全Java离线快速查找手册(可查询可学习,带实例) https://pan.baidu.com/s/1L54VuFwCdKVnQGVc8vD1TQnwmj java手册 Ja ...
- 第8章 File I/O,File类操作文件的属性
1.文件 1.1.什么是文件? 答:文件可认为是相关记录或放在一起的数据的集合 1.2.文件- -般存储在哪里? 答: 磁盘,硬盘,文件夹 1.3.JAVA程序如何访向文件属性? JAVA API:i ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- Java 7如何操纵文件属性
Java 7如何操纵文件属性 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 准备写点基础性的文章,Java 7已经出来很长一段时间了,但是很多Java程 ...
- properties文件属性值@Value注解为 java entity属性赋值
一.使用@Value为 java entity类中的非static属性赋值 举个栗子,一目了然 1.1 properties文件 1.2 servlet.xml 文件增加的配置: 1.2.1 serv ...
- properties文件属性值通过xml文件为 java entity属性赋值
一.通过xml配置文件进行赋值: 举个栗子,一目了然: 1.1 properties文件: 1.2 xml配置文件,将properties属性与java entity属性相关联:(这是一个新建的xml ...
- 怎么修改与设置.java文件属性?
1.首先 打开 >> Myeclipse或Eclipse.(我用的是Myeclipse) 2.打开 >> Window >> Preferences ...
- Java File类读取文件属性
package myjavademo;import java.io.*; publicclass MyJavaDemo { public static void main(String[] ...
随机推荐
- 【转】【mysql面试】https://blog.csdn.net/hanfazy/article/details/14520437
公司招聘MySQL DBA,也面试了10个2年MySQL DBA工作经验的朋友,谈谈自己的心得,欢迎大家指点. 1 2年MySQL DBA经验 其中许多有水分,一看到简历自我介绍,说公司项目的时 ...
- MySQL -2- 体系结构-多实例模块
0.在已创建mysql,port=3306的数据库前提下 需要删除/etc/.my.cnf再做以下操作 cp /etc/my.cnf /etc/my.cnf.3306 1.mkdir -p /u02/ ...
- C语言--浮点数
在程序中使用浮点数 -- 浮点数的精确性有限 -- 在从c语言中float类型的精确度只到小数点的7位 -- 浮点数只能在一定范围内去相信它 -- 在有精确度高的要求下不要使用浮点数(在算钱的时候,误 ...
- 利用pcl数据结构,实现RegionGrowing的复现
这篇博客是pcl中区域增长的算法进行简介以实现重写,并添加了一些判断条件. 起初原因是在使用pcl封装的regionGrowing时,效果不太好. 于是想自己重新写一下,通过改变其中种子点的生成策略和 ...
- Linux五大网络IO模型图解
对于一个应用程序即一个操作系统进程来说,它既有内核空间(与其他进程共享),也有用户空间(进程私有),它们都是处于虚拟地址空间中.用户进程是无法访问内核空间的,它只能访问用户空间,通过用户空间去内核空间 ...
- Linux知识补课
Linux补课 已经将开发环境转Linux了(当然用的是ubuntu,图像界面还是舒服一点,支持也多),不上QQ和微信的话用的还是挺舒服的,但是无奈基础欠账太多,这里赶快补一下 Linux和Unix的 ...
- SQL的编写顺序和执行顺序,以及空值处理,别名处理,转义字符处理
SQL即结构化查询语言.也就是用来从数据库中操作数据的.数据总的来说就是增删改查CRUD. 一,sql的分类,大致有四类: 1)DDL : 数据定义语言 create alter drop trunc ...
- vue组件之间通信的8种方式
对于vue来说,组件之间的消息传递是非常重要的,下面是我对组件之间消息传递的常用方式的总结. props和$emit(常用) $attrs和$listeners 中央事件总线(非父子组件间通信) v- ...
- lnmp1.4 nginx配置thinkphp5
vhost/xxx.conf配置图,重点是红色框框 研究了两三天 ,至此thinkphp5 路由,隐藏index.php全部解决 感谢网友的分享:http://blog.csdn.net/gaoxiu ...
- Vue安装与简单使用
Vue入门 使用Typora打开https://pan.baidu.com/s/1Mf3ZFSthdVUQevqWr777eA 提取码: hg9b vue中文官网教学 安装与使用,我也经常看这个 点击 ...