Java学习5--File类

来源:互联网 发布:golang select 编辑:程序博客网 时间:2024/06/05 05:14

File类属于包java.io.File

实现的接口有Serializable,Compareable<File>

它有些像c语言中文件指针,可以指向提供了路径名的文件或者目录,但是它只是展示文件本身的属性,并不能指定信息如何去读写文件等。它的大部分操作都是打印或者判断文件和目录相关属性。

常见的函数:

创建或者删除等修改类型的函数:

1.mkdirs()和mkdir()//创建目录

前者可以创建多级目录,父目录不存在也可以创建。后者创建时需要保证父目录是存在的。

2.createNewFile()//创建文件

3.delete()//删除文件或者目录

4.setReadOnly()//设置为只读

7.deleteOnExit()//虚拟机终止时删除调用对象相关的文件

8.renameTo//重命名或者移动文件,参数为File,参数的路径必须存在,且路径下面没有与修改后的名称相同的文件否则返回false

判断类型的函数:

1.isDirectory()

2.isFile()

获取属性的函数:

1.getAbsolutePath()

2.getName()  //如果为目录就打印当前目录名,如果为文件则打印文件名带后缀

3.getParent() //打印父亲的目录路径

4.exists()//是否存在

5.isAbsolute()//是否绝对路径

6.canRead()/是否可写

7.canWrite()//是否可写

8.lastModified()/最近修改时间,毫秒时间

9.isHidden()//是否为隐藏文件

10.lists()//列出目录下的文件,返回类型为String

11.listFile()//列出目录下的文件,返回类型为File

12.list(FileFilter)//带有文件过滤器的,返回类型为String

13.length()//文件长度

14.直接打印file相当于调用file.toString打印完整路径

在例子中说明它的常用函数

public static void main(String[] args) {


File file = new File("E:\\javaio");//构造函数1 写目录的完整路径名

System.out.println(file.exists());
if(!file.exists())
file.mkdirs(); //创建目录 
else
//file.delete();//删除文件

System.out.println(file.isDirectory());//是否是一个目录  如果是目录返回true,如果不是目录or目录不存在返回的是false
System.out.println(file.isFile());//是否是一个文件

//File file2 = new File("e:\\javaio\\日记1.txt");构造函数1   写文件的完整的路径名
File file2 = new File("e:\\javaio","日记1.txt");构造函数2  路径名+文件名

                 //File file3 = new File(fIle,"1.txt");构造函数3 file3和file使用同一个文件目录,可以指向不同文件

if(!file2.exists())
try {
file2.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
else 
//file2.delete();
         //常用的File对象的API
System.out.println(file);//file.toString()的内容
System.out.println(file.getAbsolutePath());
System.out.println(file.getName());
System.out.println(file2.getName());
System.out.println(file.getParent());
System.out.println(file2.getParent());
System.out.println(file.getParentFile().getAbsolutePath());

                System.out.println(file2.isAbsolute());//是否为绝对路径
System.out.println(file2.lastModified());//上次修改时间
System.out.println(file2.canRead());//是否可读
System.out.println(file2.canWrite());//是否可写

                FileTest(file,0);//遍历目录



      File filter = new File("e:\\");
String[] filenames = file.list(new FilenameFilter() {

@Override
public boolean accept(File dir, String name) {//带有过滤器的列出文件 一般用list方法可以直接使用string类型的名称。用listFiles还需要getName
return name.endsWith("txt");//调用string类型中的方法,判断文件名需要满足什么要求,返回boolean值。
}

        /*public boolean accept(File pathname) {  
            String filename = pathname.getName().toLowerCase();  
            if(filename.contains(".txt")){  
                return false;  
            }else{  
                return true;  
            } 返回的是boolean值 */


});
for (String string : filenames) {
System.out.println(string);
}

   }

public static void fileTest(String path,int i){  
    File file=new File(path);  
    File[] files=file.listFiles();                                  //String[] files=file.list()  两种函数都只得到文件或者目录名,不是完整的路径
    //System.out.println(files.length);  
    for (File f : files) {                                              //for(File ff:files)

                                                                               //File f=new File("e:\\javaio"++File.separator+ff);

                                       
        if(f.isFile()){  
        for(int j=0;j<i;j++)
        System.out.print(" ");//为了列出树状目录文件列表
            System.out.println(f.getName()+"是文件!");  
           
        }else if(f.isDirectory()){  
       
        System.out.println(f.getName()+"是文件夹!");  
   
        i=i+1;
            fileTest(f.getPath(),i);  //要获取完整的路径名
        }  
    }  
      
}  


}


0 0
原创粉丝点击