java.io.file类
  通过File类,可以操作文件或目录。可以进行创建或删除文件以及文件夹等常用操作。使用之前,先观察File类的构造方法:
  public File(String pathname):实例化的时候,必须设置好路径。直接根据路径找到文件。

File类中的主要方法和常量:

1、public static final String pathSeparator 常量 表示路径的分隔符(windows是:";")

2、public static final String separator       常量  表示路径的分隔符(windows是:"\")

3、public File(String pathname)  构造方法 创建File类对象,传入完整路径

4、public boolean createNewFile() throws IOException  普通方法  创建新文件

5、public boolean delete()  普通方法 删除文件

6、public boolean exists()   普通方法 判断文件是否存在

7、public boolean isDirectory() 判断给定的路径是否是一个目录

8、public long length()   普通方法  返回文件的大小

9、public String[] list() 普通方法 列出指定目录的全部内容,只是列出了名称

10、public File[] listFiles() 普通方法 列出指定目录的全部内容,会列出路径

11、public boolean mkdir() 普通方法 创建一个目录

12、public boolean removeTo(File dest)为已有的文件重命名

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

创建一个新文件

创建文件:public boolean createNewFile() throws IOException

使用以上的方法就可以创建文件了

假设:现在要在d盘创建一个test.txt的文件。

import java.io.File ;

import java.io.IOException ;

public class FileDemo01{

	public static void main(String args[]){

		File f = new File("d:\\test.txt") ;		// 实例化File类的对象

		try{

			f.createNewFile() ;		// 创建文件,根据给定的路径创建

		}catch(IOException e){

			e.printStackTrace() ;	// 输出异常信息

		}

	}

}

但是如果开发的时候按照以上的格式编写,则肯定会出错误。

因为在各个操作系统中,实际上路径的分隔符是不一样的,例如:

windows中使用反斜杠:"\"

Linux中使用正斜杠:"/"

如果想让Java程序的可移植性继续保持,则最好根据所在的操作系统来自动使用分隔符。

如下所示:

比如说要在temp目录下建立一个test.txt文件,在Windows下应该这么写: 
File file1 = new File ("C:\tmp\test.txt"); 
在Linux下则是这样的: 
File file2 = new File ("/tmp/test.txt"); 


如果要考虑跨平台,则最好是这么写: 
File myFile = new File("C:" + File.separator + "tmp" + File.separator, "test.txt"); 
 


import java.io.File ;

import java.io.IOException ;

public class FileDemo03{

	public static void main(String args[]){

		File f = new File("d:"+File.separator+"1981","test.txt") ;		// 实例化File类的对象

		try{

			f.createNewFile() ;		// 创建文件,根据给定的路径创建

		}catch(IOException e){

			e.printStackTrace() ;	// 输出异常信息

		}

	}

}

 

删除一个指定的文件

在File类中使用以下方法就可以删除文件:

public boolean delete()  

将之前建立好的文件删除掉:

import java.io.File ;

import java.io.IOException ;

public class FileDemo04{

	public static void main(String args[]){

		File f = new File("d:"+File.separator+"test.txt") ;		// 实例化File类的对象

		f.delete() ;	// 删除文件

	}

}

此时,文件确实被删除掉了,但是最好的做法不能直接删除而是在删除文件前判断一下文件是否存在,如果存在再执行删除操作。

在File类中可以使用exists()方法判断一个文件是否存在。

public boolean exists()

使用以上的代码增强之前的程序。代码如下:

import java.io.File;


public class FileTest{
	public static void main(String[] args) {
        File f = new File("d:"+File.separator+"1991","test.txt");
           if(f.exists())
        	f.delete();
        }
        }
	

综合创建、删除文件的操作

 假如现在有如下要求:

  给定一个路径,如果此文件存在,则删除,如果文件不存在,则创建一个新的文件

程序代码如下:

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


public class FileTest{
	public static void main(String[] args) {
        File f = new File("d:"+File.separator+"1991","test.txt"); //实例化文件
           if(f.exists()) {//如果文件存在删除
        	f.delete(); //删除文件
           }else {
        	   try{

   				f.createNewFile() ;		// 创建文件,根据给定的路径创建

   			}catch(IOException e){

   				e.printStackTrace() ;	// 输出异常信息
           }
        }
        }
}



	

创建一个文件夹

使用mkdir()方法创建一个文件夹。

public boolean mkdir() 

创建文件夹操作,实例代码如下:

import java.io.File ;

import java.io.IOException ;

public class FileDemo07{

	public static void main(String args[]){

		File f = new File("d:"+File.separator+"1991","mldn") ;		// 实例化File类的对象

		f.mkdir() ;	// 创建文件夹

	}

}

如果现在给出了一个目录,则可以直接列出目录中的内容。但是列出的方法在File类中存在两个。

 以字符串数组的形式返回:public String[] list()

 以File数组的形式返回:public File[] listFiles()

操作一:使用list()列出全部内容

程序代码如下:

import java.io.File ;

import java.io.IOException ;

public class FileDemo07{

	public static void main(String args[]){

		File f = new File("d:"+File.separator+"1991") ;		// 实例化File类的对象
         String str[] = f.list();
         for(int i=0;i<=str.length;i++) {
              System.out.println(str[i]);        	 
         }
		

	}

}

以上只是列出了全部的名字,包括文件夹的名字或是文件的名字等

操作二:使用listFiles()列出

程序代码如下:

import java.io.File ;

import java.io.IOException ;

public class FileDemo07{

	public static void main(String args[]){

		File f = new File("d:"+File.separator+"1991") ;		// 实例化File类的对象
         File file[]=f.listFiles(); //列出全部内容
         for(int i=0;i<=file.length;i++) {
              System.out.println(file[i]);        	 
         }
		

	}

}

 

判断一个给定的路径是否是目录

在File类中直接使用:public boolean isDirectory()

给定路径,判断是否是目录

程序代码如下:

import java.io.File ;

import java.io.IOException ;

public class FileDemo07{

	public static void main(String args[]){

		File f = new File("d:"+File.separator+"1991") ;		// 实例化File类的对象
        if(f.isDirectory()) {
        	System.out.println(f.getPath()+"是目录");
        	
        }else {
        	System.out.println(f.getPath()+"不是目录");
        }
		

	}

}

列出指定目录中的全部内容

如果给定了一个目录,则要求将此目录中的全部文件都列出来,但是列的时候还会存在子文件夹。

分析如下:

 


import java.io.File ;

import java.io.IOException ;

public class FileDemo{

	public static void main(String args[]){

		File my = new File("d:" + File.separator+"1991") ;	// 操作路径

		print(my) ;

	}

	public static void print(File file){	// 递归调用

		if(file!=null){	// 判断对象是否为空

			if(file.isDirectory()){	// 如果是目录

				File f[] = file.listFiles() ;	// 列出全部的文件

				if(f!=null){	// 判断此目录能否列出

					for(int i=0;i<f.length;i++){

						print(f[i]) ;	// 因为给的路径有可能是目录,所以,继续判断

					}

				}

			}else{

				System.out.println(file) ;	// 输出路径

			}

		}

	}

}