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. rust学习小记(1)

    本文的学习资料来自 Rust 程序设计语言 简体中文版 推荐用idea来写rust,装好插件rust和toml即可 cargo(包管理) 可以使用 cargo build 或 cargo check  ...

  2. Luogu P3195 [HNOI2008]玩具装箱

    题目 预处理\(C\)的前缀和\(sum\).设前\(i\)个物品的最小答案为\(f\). \(f_i=\max\limits_{j\in[1,i)}(f_j+(sum_i-sum_j-L)^2)\) ...

  3. 原生CURD

    <?phpheader("content-type:text/html;charset=utf8");$link=mysqli_connect("127.0.0.1 ...

  4. python中几个常见的魔法方法

    首先,什么是魔法方法呢?在python中方法名如果是__xxxx__()的,那么就有特殊的功能,因此叫做"魔法"方法. __ init__()方法 当一个实例被创建的时候调用的初始 ...

  5. sql server 函数详解(1)字符串函数

    ASCII()函数 CHAR()函数 LEFT()函数 RIGHT()函数 LTRIM()函数 RTRIM()函数 STR()函数 字符串逆序的函数REVERSE() 计算字符串的长度函数LEN(st ...

  6. 51nod 2589 快速讨伐

    51nod 如果不考虑升级操作,只有买装备操作和打怪操作,那么首先一定要先买装备,然后可以打死1级的怪,这些怪被打死的时间只要在第一次买装备后面好了,因为现在总操作是\(n+\sum a_i\)个,所 ...

  7. mysql数据库之存储过程

    存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该 ...

  8. MySQL第三讲 一一一一 视图、触发器、函数、存储过程

    1. 视图 1.1 视图前戏 我们之前讲有,临时表的概念. 现在我们创建一个临时表:select * from (select * from tb1 where id between 10 and 1 ...

  9. Linux日常操作整理

    1. Linux下建立ssh互信 需要在两台机器上保证安装ssh步骤:cd ~/.sshssh-keygen(每台机器执行此操作)ssh root@192.168.2.100 cat ~/.ssh/i ...

  10. centos7 安装部署zabbix客户端

    1.下载安装zabbix-agent: # rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2. ...