Home

韧桂

思考,总结

File类的使用

  • java.io.File类的使用
  • IO原理及流的分类
  • 文件流
    • FileInputStream / FileOutputStream / FileReader / FileWriter
  • 缓冲流
    • BufferedInputStream / BufferedOutputStream /
    • BufferedReader / BufferedWriter
  • 转换流
    • InputStreamReader / OutputStreamWriter
  • 标准输入/输出流
  • 打印流(了解)
    • PrintStream / PrintWriter
  • 数据流(了解)
    • DataInputStream / DataOutputStream
  • 对象流 —-涉及序列化、反序列化
    • ObjectInputStream / ObjectOutputStream
  • 随机存取文件流
    • RandomAccessFile

File 类

  • java.io.File类:文件和目录路径名的抽象表示形式,与平台无关
  • File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
  • File对象可以作为参数传递给流的构造函数
  • File类的常见构造方法:
    • public File(String pathname)pathname 为路径创建 File 对象,可以是绝对路径或者相对路径,如果 pathname 是相对路径,则默认的当前路径在系统属性 user.dir 中存储。 - public File(String parent,String child)parent 为父路径,child 为子路径创建 File 对象。
  • File 的静态属性 String separator 存储了当前系统的路径分隔符。
    • 在 UNIX 中,此字段为‘/’,在 Windows 中,为‘\\
File dir1 = new File("D:/IOTest/dir1");
if (!dir1.exists()) {     // 如果D:/IOTest/dir1不存在,就创建为目录
	dir1.mkdir(); }
// 创建以dir1为父目录,名为"dir2"的File对象
File dir2 = new File(dir1, "dir2"); 
if (!dir2.exists()) { // 如果还不存在,就创建为目录
	dir2.mkdirs(); }
File dir4 = new File(dir1, "dir3/dir4");
if (!dir4.exists()) {
	dir4.mkdirs();
}
// 创建以dir2为父目录,名为"test.txt"的File对象
File file = new File(dir2, "test.txt"); 	
if (!file.exists()) { // 如果还不存在,就创建为文件
	file.createNewFile();}
package fifteen;

import java.io.File;
import java.io.IOException;
import java.util.Date;

import org.junit.Test;

/*
 * java.io.File类
 * 1.凡是与输入、输出相关的类、接口等都定义在java.io包下
 * 2.File是一个类,可以有构造器创建其对象。此对象对应着一个文件(.txt .avi .doc .ppt .mp3 .jpg)或文件目录
 * 3.File类对象是与平台无关的。
 * 4.File中的方法,仅涉及到如何创建、删除、重命名等等。只要涉及文件内容的,File是无能为力的,必须由io流来完成。
 * 5.File类的对象常作为io流的具体类的构造器的形参。
 */
public class TestFile {
	/*
		文件操作相关
	 *  createNewFile()  //创建文件
		delete()  //删除
		
		目录操作相关
		mkDir():创建一个文件目录。只有在上层文件目录存在的情况下,才能返回true
		mkDirs():创建一个文件目录。若上层文件目录不存在,一并创建
		list()  //把文件名列出来,以数组的形式
		listFiles()  //把文件列出来
	 */
	@Test
	public void test3() throws IOException{
		File file1 = new File("d:/io/helloworld.txt");
		System.out.println(file1.delete());
		
		if(!file1.exists()){
			boolean b = file1.createNewFile();
			System.out.println(b);
		}
		
		File file2 = new File("d:\\io1\\io2");
		if(!file2.exists()){
			boolean b = file2.mkdirs();
			System.out.println(b);
		}
		
		File file3 = new File("d:\\teach");
		String[] strs = file3.list();
		for(int i = 0;i < strs.length;i++){
			System.out.println(strs[i]);
		}
		
		System.out.println();
		
		File[] files = file3.listFiles();
		for(int i = 0;i < files.length;i++){
			System.out.println(files[i].getName());
		}
	}
	
	/*  文件检测
	 *  exists() //文件是否存在
		canWrite() //文件是否可写
		canRead() //可读
		isFile() //是文件
		isDirectory() //还是目录
		*
		* 获取常规文件信息
		lastModified() //文件最后修改时间
		length() //文件内容有多大

	 */
	@Test
	public void test2(){
		File file1 = new File("d:/io/helloworld.txt");
		File file2 = new File("d:\\io\\io1");
		
		System.out.println(file1.exists());
		System.out.println(file1.canWrite());
		System.out.println(file1.canRead());
		System.out.println(file1.isFile());
		System.out.println(file1.isDirectory());
		System.out.println(new Date(file1.lastModified()));
		System.out.println(file1.length());
		
		System.out.println();
		
		System.out.println(file2.exists());
		System.out.println(file2.canWrite());
		System.out.println(file2.canRead());
		System.out.println(file2.isFile());
		System.out.println(file2.isDirectory());
		System.out.println(new Date(file2.lastModified()));
		System.out.println(file2.length());
	
	}
	
	/*
	 * 路径:
	 * 绝对路径:包括盘符在内的完整的文件路径
	 * 相对路径:在当前文件目录下的文件的路径
	 *
	 * 访问文件名:
	 *  getName() //获取文件名字
		getPath() //获取文件路径
		getAbsoluteFile() //绝对文件名
		getAbsolutePath() //绝对路径
		getParent() //上一层文件
		renameTo(File newName) //把一个文件改为另一个文件

	 */
	@Test
	public void test1(){
		File file1 = new File("d:/io/helloworld.txt");
		File file2 = new File("hello1.txt");
		
		File file3 = new File("d:\\io\\io1");
		File file4 = new File("d:\\io2");
		
		System.out.println(file1.getName());
		System.out.println(file1.getPath());
		System.out.println(file1.getAbsoluteFile());
		System.out.println(file1.getParent());
		System.out.println(file1.getAbsolutePath());
		
		System.out.println();
		
		System.out.println(file3.getName());
		System.out.println(file3.getPath());
		System.out.println(file3.getAbsoluteFile());
		System.out.println(file3.getParent());
		System.out.println(file3.getAbsolutePath());
		
		//renameTo(File newName):重命名
		//file1.renameTo(file2):file1重命名为file2.要求:file1文件一定存在,file2一定不存在
		boolean b = file1.renameTo(file2);
		System.out.println(b);
		
		boolean b1 = file4.renameTo(file3);
		System.out.println(b1);
	}
}

韧桂 2020-01-04