java IO

代码如下:

/**
 * 
 */
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();
	}
}

 

转载于:https://my.oschina.net/TJALS/blog/845451

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值