黑马程序员——Java的File类的简单应用,文件的拷贝

------- android培训java培训、期待与您交流! ----------

File类的对象可以代表一个具体的文件路径,在实际代表时,可以使用绝对路径也可以使用相对路径。可以通过其构造函数创建一个相对路径、绝对路径,也可以通过父路径和子路径相结合的方式,创建文件路径。

File file=new File("d:\\file\\file1");File file1=new File("d:\\file","\\file.txt");

该类提供了很多方法,可是很方便地对文件进行操作。

1、createNewFile()——用于创建一个文件,当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。

2、mkdir()和mkdirs(),主要用作创建抽象路径名的指定目录或多级目录。

3、exists()用作判断此抽象路径名表示的文件或目录是否存在。

4、getName()返回由此抽象路径名表示的文件或目录的名称。

5、getPath()将此抽象路径名转换为一个路径名字符串。

6、isFile()用于判断该抽象路径名是否是一个文件

7、isDirectory()用于判断该路径名是否是一个文件夹

8、listFiles()返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。可以通过该数组遍历其下的子文件及文件夹。

9、list()返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。

下面用一个实例这些方法如何使用:

该模块实现了文件及文件夹的拷贝工作,可以将指定文件或文件夹从一个目录拷贝到另一个地方,其中包括文件夹下的一些子文件夹和文件等数据。

import java.io.*;
class FileProDemo 
{
	public static void main(String[] args) 
	{
		//System.out.println("Hello World!");
		//handleFile();
		//copyFile("d:\\file","e:\\file");
		copyFile("d:\\text.txt","e:text.txt");
	}
	public static void handleFile()
	{
		//创建File对象
		File f0=new File("d:\\D盘文件");
		File f1=new File("d:\\file\\abc\\aa");
		File f2=new File("d:\\filetext.txt");
		File f3=new File("d:\\","text.txt");
		//创建文件
		try
		{
			//创建文件
			f2.createNewFile();
			f3.createNewFile();
			//创建文件夹
			f0.mkdirs();//创建根目录
			f1.mkdirs();//创建多级目录
		}
		catch (IOException e)
		{
			System.out.println(e.getMessage());
		}

		File[] files=f0.listFiles();
		for(File f:files)
		{
			if(f.isFile())
				System.out.println(f.getName());
			else
				System.out.println(f.getPath());
		}
		/*System.out.println("getAbsolute():"+f2.getAbsolutePath());
		System.out.println("f1.getName():"+f1.getName());
		System.out.println("f1.getPaht():"+f1.getPath());

		System.out.println("f0.getName():"+f0.getName());
		System.out.println("f0.getPaht():"+f0.getPath());
		System.out.println("f0.isDirectory():"+f0.isDirectory());*/

		//for(String s:dir1)
			//System.out.println("dir:"+s);
	}
	//拷贝文件(包括文件夹)
	public static void copyFile(String src,String des)
	{
		try
		{
			File srcFile=new File(src);
			File desFile=new File(des);

			//返回父目录下的文件名或路径名数组
			File[] files=srcFile.listFiles();
			//int len=files.length;
			//如果是文件直接拷贝文件
			if(srcFile.isFile())
			{
				copyFileData(srcFile.getPath(),des);
				return ;
			}
			//如果不是文件
			//如果当前目录下没有此文件夹,则新创建一个
			if(!desFile.exists())
			{
				desFile.mkdirs();
				System.out.println("原文件夹:"+srcFile.getPath());
				System.out.println("新创建的文件夹:"+desFile.getPath());
			}
			//遍历父目录下的文件和文件夹
			for(File f:files)
			{
				//找到文件则直接将数据进行拷贝
				if(f.isFile())
					copyFileData(f.getPath(),des+"\\"+f.getName());
				//找到的是文件夹,则重复以上过程(递归操作)
				else
				{
					copyFile(f.getPath(),des+"\\"+f.getName());
					//System.out.println("创建过程——路径名:"+f.getPath()+"--文件名"+f.getName());
				}
			}
		}
		catch (Exception e)
		{
			System.out.println(e.getMessage());
		}
	}
	//拷贝数据
	public static void copyFileData(String src,String des)
	{
		BufferedInputStream bufIn=null;
		BufferedOutputStream bufOut=null;
		try
		{
			bufIn=new BufferedInputStream(new FileInputStream(src));
			bufOut=new BufferedOutputStream(new FileOutputStream(des));

			//自定义缓冲区大小
			byte[] buf=new byte[1024];
			int readNum=0;
			while((readNum=bufIn.read(buf))!=-1)
			{
				bufOut.write(buf,0,readNum);
				bufOut.flush();
			}
			bufIn.close();
			bufOut.close();
		}
		catch (IOException e)
		{
			System.out.println(e.getMessage());
		}
		finally
		{
			try
			{
				if(bufIn!=null)
					bufIn.close();
			}
			catch (IOException e)
			{
				System.out.println(e.getMessage());
			}
			try
			{
				if(bufOut!=null)
					bufOut.close();
			}
			catch (IOException e)
			{
				System.out.println(e.getMessage());
			}
		}
	}
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值