代码如下:
/**
*
*/
package com.M.controller.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
/**
* @author online zuozuo 于2017年2月21日下午3:14:10编辑 本类用于测试IO
*
*/
public class IOTest {
/**
* 创建文件
*/
public static void createFile() {
File folder = new File("C:/Users/Administrator/Desktop/test/");
File file = new File("C:/Users/Administrator/Desktop/test/test.txt");
try {
// 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录,
// 确保下一步的文件创建能够被正确的执行,否则抛出IO异常
if (folder.mkdirs()) {
System.out.println("本次命令没有找到指定文件夹,所以新创建了你指定的抽象路径中必需的文件夹!");
}
// 如若文件不存在则创建该文件
if (file.createNewFile()) {
System.out.println("本次命令没有找到指定文件,所以新创建了你指定的文件!");
}
System.out.println("该文件所在的磁盘总容量为:" + folder.getTotalSpace() / (1024 * 1024 * 1024) + "G");
// f.delete(); // 删除此抽象路径名表示的文件或目录
System.out.println("你创建的文件名称为: " + file.getName());
// 如果该路径没有父目录,返回null
System.out.println("该文件所在的文件夹路径为: " + file.getParent());
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 统计文件大小 1.new File()里面的文件地址也可以写成C:\\Users\\Administrator\\Desktop
* 前一个\是用来对后一个进行转换的
* 为什么要使用FileChannel而不是fileInputStream.read()方法:
* 原因是后者返回一个int,最大只支持到统计1.99GB的文件
* 并且,是进行循环统计,执行效率低下
* FileChannel返回的一个long类型的,支持当下所有大小的文件
*/
public static void fileCount() {
String path = "C:/Users/Administrator/Desktop/数据/数据.rar";
File file = new File(path);
// 文件输入流
FileInputStream fileInputStream = null;
// 文件通道
FileChannel fileChannel = null;
// 该文件必须存在
// 该路径必须是一个文件而不是文件夹才进行统计,否则抛出FileNotFoundException异常
if (file.exists() && file.isFile()) {
try {
fileInputStream = new FileInputStream(file);
fileChannel = fileInputStream.getChannel();
System.out.println("你指定的文件长度是: " + fileChannel.size() + " 字节");
} catch (final IOException e) {
e.printStackTrace();
} finally {
// 必须保证文件输入流不是一个null
if (null != fileInputStream) {
try {
// FileInputStream是有缓冲区的,所以用完之后必须关闭,否则可能导致内存占满,数据丢失。
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} else {
System.out.println("【抱歉,该抽象路径不是指向一个确定的文件】");
}
}
public static void main(String arag[]) {
createFile();
fileCount();
}
}