文件与目录操作

文件操作

  • File, 文件, 用于进行文件/目录相关操作   java.io.File
  • File对象用于指代一个文件或目录
File f = new File("e:/examples/abc.txt");

注意:

  • 路径可以用斜线(推荐),也可以用反斜线

 "e:/examples/abc.txt"  

"e:\\examples\\abc.txt"   ( 要转义 ) 

  • File就是一个工具类, new File()的时候并不是要创建这个文件
package my;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test
{
	public static void main(String[] args)
	{
		File f=new File("d:/abc.txt");
		if(f.exists())
			System.out.println("存在!"+f);
		else
			System.out.println("不存在!"+f);
		
		if(f.isFile())
			System.out.println("它是一个文件!"+f);
		if(f.isDirectory())
			System.out.println("它是一个目录!"+f);
		
		long size=f.length();//文件大小
		long lastModified=f.lastModified();//最后修改时间
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		
		System.out.println("大小:"+size);
		System.out.println("最后修改时间:"+sdf.format(new Date(lastModified)));
		
		f.renameTo(new File("d:/abcd.txt"));//重命名
		System.out.println("Exit.");
	}

}

目录操作

  • File, 既可以代表一个文件,也可以代表一个目录。 File d = new File("e:/examples/videos");

创建层级目录 f.mkdirs();

  1. 如果目录不存在,则创建目录
  2. 创建层次目录,路径中的每一级都会被自动创建
package my;

import java.io.File;

public class Test
{
	public static void main(String[] args)
	{
		File f=new File("d:/a/b/c/d");
		f.mkdirs();
		System.out.println("Exit.");
	}

}
  • 使用listFiles() 可以遍历目录下的子目录/文件

注:仅一级目录   

package my;

import java.io.File;

public class Test
{
	public static void main(String[] args)
	{
		File f=new File("D:\\JavaProjects");
		File[] listFiles=f.listFiles();
		for(File ff : listFiles)
		{
			if(ff.isFile())
				System.out.println("发现文件:"+ff);
			if(ff.isDirectory())
				System.out.println("发现目录:"+ff);
		}
		System.out.println("Exit.");
	}

}

可以在listFilter的时候设置一个过滤器,查找d盘下的后缀为 .txt 的文件

package my;

import java.io.File;
import java.io.FileFilter;

public class Test
{
	public static void main(String[] args)
	{
		File f=new File("d:/");
		
		File[] listFiles=f.listFiles(new FileFilter() {
			
			@Override
			public boolean accept(File pathname)
			{
				if(pathname.getAbsolutePath().endsWith(".txt"))
					return true;
				return false;
			}
		});
		for(File ff : listFiles)
		{
			if(ff.isFile())
				System.out.println("发现文件:"+ff);
			if(ff.isDirectory())
				System.out.println("发现目录:"+ff);
		}
		System.out.println("Exit.");
	}

}

递归遍历子目录

package my;

import java.io.File;

public class Test
{
	public static void main(String[] args)
	{
		File f=new File("D:\\JavaProjects");
		bianli(f);
		System.out.println("Exit.");
	}

	//遍历
	public static void bianli(File f)
	{
		File[] listFiles=f.listFiles();
		for(File ff : listFiles)
		{
			if(ff.isFile())
				System.out.println("发现文件:"+ff);
			if(ff.isDirectory())
			{
				System.out.println("发现目录:"+ff);
				bianli(ff);
			}
		}
	}

}

在 new File()时可以指定其父目录

		File homeDir=new File("d:/test");
		File f=new File(homeDir, "abc.txt");

File是一个轻量级对象,不必转成String,File和文件本身没什么关系,仅含有路径信息。

相对路径与绝对路径

  • 绝对路径

当指定一个文件/目录的位置时,可以用绝对路径 ,例如 File d = new File("e:/examples/videos");

绝对路径:从根目录开始指定

C:/hello.txt

C:/program files/office/

E:/JavaProjects/example1203/src/my/Test.java

  • 相对路径

也可以指定一个相当于当前目录的路径 ,例如: File f = new File("src/my/Test.java");

当前目录 E:/JavaProjects/example1203

完整路径: (当前目录 + 相对路径)

E:/JavaProjects/example1203/src/my/Test.java

  • 相对路径举例

./data/config.txt

../example1101/src

../../WebProjects/

./src/../data/config.txt

其中   . 表示本目录 .. 表示父目录

  • 工作目录 Working Directory

我们所说的当前路径,指的是程序的工作目录 。默认地,工作目录是程序运行时的起始目录。

注:工作目录并不是class文件所在的目录 ,在Eclipse | Run Configuration里可以指定

  • 在代码里获取/修改当前的工作目录
// 查询当前的工作目录 
String workDir = System.getProperty("user.dir"); 
// 修改工作目录 
System.setProperty("user.dir", "d:");

复制与移动

使用第三方的库来完成文件和目录复制与移动操作 http://apache.org/

使用的是 commons-io-2.4.jar

  • 常见文件操作

FileUtils 类支持常见的文件和目录操作 例如,

 FileUtils.deleteQuietly() 删除文件  

FileUtils.copyFile() 复制文件  

FileUtils.copyFileToDirectory() 复制文件到目录 

 FileUtils.moveFile() 移动文件  

FileUtils.moveDirectory() 移动目录

package my;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;

public class Test
{
	public static void main(String[] args)
	{
		
		File from=new File("d:/abc.txt");
		File to=new File("d:/abc-副本.txt");
		try
		{
			FileUtils.copyFile(from, to);//文件复制
		} catch (IOException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		System.out.println("Exit.");
	}
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值