您的位置:首页 > 职场人生

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

2014-08-15 16:41 387 查看
-------
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());
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐