您的位置:首页 > 编程语言 > Java开发

java学习之IO流3

2015-09-26 21:13 567 查看
File类:

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");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  io流 File