package com.io;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import org.junit.Test;
public class FileTest {
/**
* 1、File类对象,对应着物理中的一个文件
* 2、File类中的方法,仅涉及到如何创建、修改、删除等等对文件的操作,操作不了文件内容
* 操作文件内容需要io
* 3、File类的对象,常常作为io流具体类的形参
*/
@Test
public void fileTest(){
File file = new File("hello1.txt");//把物理中的一个文件表示成java里面的一个对象
System.out.println(file.getAbsolutePath());
System.out.println(file.getParent());
System.out.println(file.getPath());
System.out.println(file.getName());
File file1 = new File("hello2.txt");
/**
* 重命名
* 要求file必须存在,file1必须不存在,才能重命名成功。
* file和file1都必须是文件或都是目录
* 在同一盘符
*/
boolean flag = file.renameTo(file1);
System.out.println("重命名返回"+flag);
/**
* 文件最后修改日期
*/
System.out.println(new Date(file1.lastModified()));
file.list();//返回String数组,仅能获取名字
file.listFiles();//返回file数组,可获取file对象,对file操作
}
public static void createFile(String fileDirParam, String fileName)
throws IOException {
File fileDir = new File(fileDirParam);
boolean fileDirFlag = fileDir.exists();
System.out.println("is fileDir exists "+fileDirFlag);
if(!fileDirFlag){
boolean createDirFlag = fileDir.mkdirs();
System.out.println("is create filedir success " + createDirFlag);
}
File file = new File(fileDirParam + fileName);
boolean fileExistFlag = file.exists();
System.out.println("is fileExist " + fileExistFlag);
if(!fileExistFlag){
boolean flag = file.createNewFile();
System.out.println("is file created " + flag);
}
System.out.println("该分区大小"+file.getTotalSpace()/(1024*1024*1024)+"G");
}
public static Long getFileLength(String fileDirParam, String fileName) throws IOException{
Long fileLength = 0l;
InputStream ins = null;//输入流
ins = new FileInputStream(new File(fileDirParam+fileName));
while(ins.read() != -1){
fileLength ++;
}
System.out.println("file length is "+fileLength);
ins.close();//FileInputStream是有缓冲区的,所以用完之后必须关闭,否则可能导致内存占满,数据丢失
return fileLength;
}
public static Long getFileLengthNew(String fileDirParam, String fileName) throws IOException{
Long fileLength = 0l;
List<Object> objList = new ArrayList<Object>();
HashMap ht;
Hashtable hs;
objList.hashCode();
InputStream ins = null;//输入流
byte[] buffer = new byte[1024];//在栈内存是定义1024个连续的byte单位
ins = new FileInputStream(new File(fileDirParam+fileName));
while(ins.read(buffer) != -1){
}
System.out.println("file length is "+fileLength);
ins.close();//FileInputStream是有缓冲区的,所以用完之后必须关闭,否则可能导致内存占满,数据丢失
return fileLength;
}
public static void main(String[] args) {
try {
getFileLengthNew("d:/a/d/e/c/", "test.txt");
} catch (IOException e) {
e.printStackTrace();
}
}
}