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)的更多相关文章

  1. Java核心技术梳理-IO

    一.引言 IO(输入/输出),输入是指允许程序读取外部数据(包括来自磁盘.光盘等存储设备的数据).用户输入数据.输出是指允许程序记录运行状态,将程序数据输出到磁盘.光盘等存储设备中. IO的主要内容包 ...

  2. Java的Path、Paths和Files

    前言 因为这几天被java.nio的这几个接口和工具类卡到了,就顺便地查了一波文档以及使用方法,这篇其实更像是API的复制粘贴,只不过我在注释里多写了一些output和注意事项,看不惯API的可以选择 ...

  3. (私人收藏)[开发必备]最全Java离线快速查找手册(可查询可学习,带实例)

    (私人收藏)[开发必备]最全Java离线快速查找手册(可查询可学习,带实例) https://pan.baidu.com/s/1L54VuFwCdKVnQGVc8vD1TQnwmj java手册 Ja ...

  4. 第8章 File I/O,File类操作文件的属性

    1.文件 1.1.什么是文件? 答:文件可认为是相关记录或放在一起的数据的集合 1.2.文件- -般存储在哪里? 答: 磁盘,硬盘,文件夹 1.3.JAVA程序如何访向文件属性? JAVA API:i ...

  5. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  6. Java 7如何操纵文件属性

    Java 7如何操纵文件属性 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 准备写点基础性的文章,Java 7已经出来很长一段时间了,但是很多Java程 ...

  7. properties文件属性值@Value注解为 java entity属性赋值

    一.使用@Value为 java entity类中的非static属性赋值 举个栗子,一目了然 1.1 properties文件 1.2 servlet.xml 文件增加的配置: 1.2.1 serv ...

  8. properties文件属性值通过xml文件为 java entity属性赋值

    一.通过xml配置文件进行赋值: 举个栗子,一目了然: 1.1 properties文件: 1.2 xml配置文件,将properties属性与java entity属性相关联:(这是一个新建的xml ...

  9. 怎么修改与设置.java文件属性?

    1.首先  打开  >>  Myeclipse或Eclipse.(我用的是Myeclipse) 2.打开  >>  Window  >>  Preferences  ...

  10. Java File类读取文件属性

     package myjavademo;import java.io.*; publicclass MyJavaDemo {     public static void main(String[]  ...

随机推荐

  1. oracle group by rollup实现小计、合计

    SQL合计汇总实现数据N+1条显示: 注意group by rollup((ename, job, empno))!!! select decode(grouping(ename) + groupin ...

  2. linux 内核数据结构之红黑树.

    转载: http://www.cnblogs.com/haippy/archive/2012/09/02/2668099.html https://zh.wikipedia.org/zh/%E7%BA ...

  3. Comet OJ - Contest #13 「火鼠的皮衣 -不焦躁的内心-」

    来源:Comet OJ - Contest #13 芝士相关: 复平面在信息学奥赛中的应用[雾 其实是道 sb 题??? 发现原式貌似十分可二项式定理,然后发现确实如此 我们把 \(a^i\) 替换成 ...

  4. linux:文件/目录权限设置

    一.权限修改命令:     chmod [OPTION]... MODE[,MODE]... FILE...二.文件/目录MODE指定方式: 1).八进制(r=4,w=2,x=1) [root@pin ...

  5. vue的v-model指令原理分析

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. vue-Ie下踩坑20190820

    开发的vue项目终于告一段落,终于是可以部署在测试服务器给客户看了,期间也是遇到各式各样的坑. 1.有些bug在谷歌是在没问题的,在ie上就会暴露出来,因为其中一个模块设计多个类型资源的列表,所以写纯 ...

  7. AIX中磁带设备的使用

    1.AIX中的磁带设备 在UNIX系统中,磁带一般具有如下共同属性. 磁带密度:指磁带使用时采用的低密度方式和高密度方式   回退操作:磁带一次写入操作完成后,是否立刻倒带,回退到磁带头部.   位置 ...

  8. django笔记二之数据库

    django笔记二之数据库 [同步数据库之前的操作] yum install MySQL-python.x86_64 -y 2)开启数据库服务并创建表 创建数据库设置 为utf8: create da ...

  9. 被弃用的php函数以及用来替代的函数

    下面列举了部分被弃用的函数: call_user_method()(使用 call_user_func() 替代) call_user_method_array() (使用 call_user_fun ...

  10. Codeforces 979 字符串强制N变换最多出现字母 DFS子树 暴力01字典树

    A /* Huyyt */ #include <bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) #define mkp(a,b) ...