java学习之IO流3
2015-09-26 21:13
567 查看
File类:
1、构造函数和字段
下图中是File类中的构造函数,separator是File类中的静态字段,表示名称分隔符,在windows中是‘\’。pathSeparator是File类中的静态字段,表示路径分隔符,在windows中是“;”(分号)。
2、常见方法
(1)获取
1.1 获取文件名称。
1.2 获取文件路径。
1.3 获取文件大小。
1.4 获取文件修改时间。
下图中第4行获取文件的名称,第5行获取文件的绝对路径,第6行获取文件的相对路径,第7行获取文件的大小,第8行获取文件最后一次修改时间,返回毫秒值。
(2)创建和删除
下图中第3行建立文件流对象,并关联文件。第4行使用createNewFile()方法创建一个新文件,返回值是boolean类型,表示如果创建成功就返回true,如果创建失败就返回false。文件和文件夹的创建和输出流不一样,如果文件或文件夹不存在则创建,如果存在则不创建。第6行使用delete()方法删除文件,删除成功返回true,删除失败返回false。如果要删除的文件正在被流操作,那也不能删除成功,返回false。第9行使用mkdir()方法创建一个文件夹"abc",注意,这个方法只能创建单个文件夹,不能创建多级目录的文件夹,创建成功返回true,失败返回false。第10行使用delete()方法删除文件夹,如果文件夹中有文件,就不能删除,而且删除的文件夹不会放在回收站中。要创建多级目录的文件夹要使用mkdirs()方法,如第12行,第13行删除文件夹实际上删除的是文件夹e,因为第11行构造函数中实际关联的是文件夹e,之前的都是目录。
(3)判断
下图中第4行用exists()方法判断文件是否存在,第5行用isFile()判断是否为文件。如果文件不存在时,返回的也是false。第6行用isDirectory()方法判断是否为目录。
(4)重命名
下图中调用renameTo()方法,将文件0.txt重命名为1.txt,也可以把指定命名后的文件的所在路径,比如d:\\1.txt,这样重命名后,原来e:\\0.txt 就会消失,而出现在d盘下1.txt。
下图中第3行调用File的静态方法listRoots(),返回系统更目录,放在一个File对象数组中,输出时会看到所有系统的根目录。第14行中,调用的方法获得指定目录的空闲空间,第15行获取的是总空间。
下图中第4行用list()方法,获取当前目录下的文件以及文件夹的名称,包括隐藏文件。注意:调用list方法的File对象中封装的必须是目录,否则会发生NullPointerException,因为String数组根本就没有创建成功。如果访问系统级目录,也会发生空指针异常。如果目录存在,但是没有内容,会返回一个数组,但是长度为0。
(7)过滤器
如果使用list()方法只要获取指定的文件,就要使用过滤器。如下图11-18行,定义一个类FilterByJava,实现了过滤器接口FilenameFilter,这个接口中只有一个方法就是accept,我们必须重写改方法。参数中dir是文件的路径,name是文件名。只有满足条件的文件才返回true,否则返回false。第4行就使用list的重载函数,传递过滤器对象作为市场,返回指定条件的文件名称。其实过滤器的实现就是先调用list,把该目录下的所有文件名都放在一个容器中,然后在逐个判断是否满足条件,最后把满足条件的文件名返回。
1、构造函数和字段
下图中是File类中的构造函数,separator是File类中的静态字段,表示名称分隔符,在windows中是‘\’。pathSeparator是File类中的静态字段,表示路径分隔符,在windows中是“;”(分号)。
public static void constructorDemo() { File f1 = new File("c:\\a.txt"); File f2 = new File("c:\\", "a.txt"); File f = new File("c:\\"); File f3 = new File(f, "a.txt"); File f4 = new File("c:" + File.separatorChar + "a.txt"); System.out.println(f4);//c:\a.txt }
2、常见方法
(1)获取
1.1 获取文件名称。
1.2 获取文件路径。
1.3 获取文件大小。
1.4 获取文件修改时间。
下图中第4行获取文件的名称,第5行获取文件的绝对路径,第6行获取文件的相对路径,第7行获取文件的大小,第8行获取文件最后一次修改时间,返回毫秒值。
public static void getDemo() { File file = new File("demo.txt"); String name = file.getName(); String absPath = file.getAbsolutePath(); String path = file.getPath(); long len = file.length(); long time = file.lastModified(); System.out.println(name);//demo.txt System.out.println(absPath);//E:\java workspace\OtherAPI\demo.txt System.out.println(path);//demo.txt System.out.println(len);//4 System.out.println(time);//1434104737956 }
(2)创建和删除
下图中第3行建立文件流对象,并关联文件。第4行使用createNewFile()方法创建一个新文件,返回值是boolean类型,表示如果创建成功就返回true,如果创建失败就返回false。文件和文件夹的创建和输出流不一样,如果文件或文件夹不存在则创建,如果存在则不创建。第6行使用delete()方法删除文件,删除成功返回true,删除失败返回false。如果要删除的文件正在被流操作,那也不能删除成功,返回false。第9行使用mkdir()方法创建一个文件夹"abc",注意,这个方法只能创建单个文件夹,不能创建多级目录的文件夹,创建成功返回true,失败返回false。第10行使用delete()方法删除文件夹,如果文件夹中有文件,就不能删除,而且删除的文件夹不会放在回收站中。要创建多级目录的文件夹要使用mkdirs()方法,如第12行,第13行删除文件夹实际上删除的是文件夹e,因为第11行构造函数中实际关联的是文件夹e,之前的都是目录。
public static void createAndDeleteDemo() throws IOException { File file = new File("file.txt"); // boolean b = file.createNewFile(); // System.out.println("b = " + b); // boolean b = file.delete(); // System.out.println("b = " + b); // File dir = new File("abc"); // System.out.println(dir.mkdir());//只创建单个文件夹,不能创建多级目录的文件夹 // System.out.println(dir.delete());//如果文件夹中有文件,就不能删除。删除的文件夹不会在回收站中 File dirs = new File("a\\b\\c\\d\\e"); System.out.println(dirs.mkdirs());//true System.out.println(dirs.delete());//true }
(3)判断
下图中第4行用exists()方法判断文件是否存在,第5行用isFile()判断是否为文件。如果文件不存在时,返回的也是false。第6行用isDirectory()方法判断是否为目录。
public static void isDemo() { File file1 = new File("demo.txt"); System.out.println(file1.exists());//true System.out.println(file1.isFile());//true System.out.println(file1.isDirectory());//false }
(4)重命名
下图中调用renameTo()方法,将文件0.txt重命名为1.txt,也可以把指定命名后的文件的所在路径,比如d:\\1.txt,这样重命名后,原来e:\\0.txt 就会消失,而出现在d盘下1.txt。
public static void renameToDemo() { File f1 = new File("e:\\0.txt"); File f2 = new File("e:\\1.txt"); f1.renameTo(f2); }(5)系统根目录和容量
下图中第3行调用File的静态方法listRoots(),返回系统更目录,放在一个File对象数组中,输出时会看到所有系统的根目录。第14行中,调用的方法获得指定目录的空闲空间,第15行获取的是总空间。
public static void listRootsDemo() { File[] files = File.listRoots(); for(File file : files) { System.out.println(file); } /*输出 * C:\ D:\ E:\ F:\ G:\*/ File f = new File("d:\\"); System.out.println("空闲空间:" + f.getFreeSpace());// System.out.println("总空间:" + f.getTotalSpace());// }(6)获取目录内容
下图中第4行用list()方法,获取当前目录下的文件以及文件夹的名称,包括隐藏文件。注意:调用list方法的File对象中封装的必须是目录,否则会发生NullPointerException,因为String数组根本就没有创建成功。如果访问系统级目录,也会发生空指针异常。如果目录存在,但是没有内容,会返回一个数组,但是长度为0。
public static void listDemo() { File file = new File("d:\\"); String[] names = file.list(); for(String name : names) { System.out.println(name); } }
(7)过滤器
如果使用list()方法只要获取指定的文件,就要使用过滤器。如下图11-18行,定义一个类FilterByJava,实现了过滤器接口FilenameFilter,这个接口中只有一个方法就是accept,我们必须重写改方法。参数中dir是文件的路径,name是文件名。只有满足条件的文件才返回true,否则返回false。第4行就使用list的重载函数,传递过滤器对象作为市场,返回指定条件的文件名称。其实过滤器的实现就是先调用list,把该目录下的所有文件名都放在一个容器中,然后在逐个判断是否满足条件,最后把满足条件的文件名返回。
public static void listDemo1() { File file = new File("e:\\"); String[] names = file.list(new FilterByJava()); for(String name : names) { System.out.println(name); } } public class FilterByJava implements FilenameFilter { public boolean accept(File dir, String name) { return name.endsWith(".java"); } }
相关文章推荐
- sql2005 附加数据库出错(错误号:5123)解决方法
- C#中File类的文件操作方法详解
- asp #include file 与 #include virtual 的区别小结第1/2页
- PHP file_exists问题杂谈
- css美化input file按钮的代码方法
- 改变文件域的样式实现思路同时兼容ie、firefox
- How to Auto Include a Javascript File
- 清理SQL Server 2008日志文件Cannot shrink log file 2 的解决方案
- Locate a File Using a File Open Dialog Box
- Save a File Using a File Save Dialog Box
- 基于java file 文件操作operate file of java的应用
- php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
- PHP 得到根目录的 __FILE__ 常量
- 解析php dirname()与__FILE__常量的应用
- file_get_contents获取不到网页内容的解决方法
- sql2005 create file遇到操作系统错误5拒绝访问 错误1802
- Can’t open file:'[Table]mytable.MYI'
- js 获取、清空input type="file"的值示例代码
- PHP 的 __FILE__ 常量
- 将input file的选择的文件清空的两种解决方案