IO流学习笔记1——File类

Java的IO支持通过java.io包下的类和接口来支持,在java.io包下主要包括输入、输出两种IO流,每种输入、输出流又可以分为字节流和字符流两大类。其中字节流以字节为单位,来处理输入、输出操作,而字符流则以字符来处理输入、输出操作。除此之外,Java的IO流使用了一种装饰器设计模式,它将IO流分成底层节点流和上层处理流,其中节点流用于和底层物理存储节点直接关联——不同物理节点获取节点流的方式可能存在一定的差异,但程序可以把不同的物理节点流包装成统一的处理流,从而允许程序使用统一的输入、输出代码来读取不同物理存储节点的资源。

File类

File类是java.io包下代表与平台无关的文件和目录,也就是说如果希望在程序中操作文件或目录都可以通过File类来完成,值得指出的是,不管是文件、还是目录,都是使用File来操作的,File能新建、删除和重命名文件或目录,File不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。

在Windows的路径分隔符使用反斜杠(\),而Java程序中的反斜杠表示转义字符,所以如果需要在Windows中路径下包括反斜杠,应该用两条反斜杠,如:C:\\IO\\test.java,或者直接使用斜线也可以,如:C:/IO/test.java,Java程序支持将斜线当成平台无关的路径分隔符。

File类访问文件或目录使用的例子,代码如下:

package com.songguoliang.io;

import java.io.File;
import java.io.IOException;
/**
 * File类使用方法
 * @date 2015-08-13 14:32:16
 * @author sgl
 */
public class FileTest {
	public static void main(String[] args) throws IOException {
		//以当前路径来创建一个File对象,也可以使用绝对路径创建File对象
		File file=new File(".");
		//直接获取文件名,输出一个点
		System.out.println(file.getName());
		//获取抽象路径名的字符串形式
		System.out.println(file.getPath());
		//获取相对路径的父路径可能出错,下面代码输出null
		System.out.println(file.getParent());
		//获取绝对路径
		System.out.println(file.getAbsoluteFile());
		//获取上一级路径
		System.out.println(file.getAbsoluteFile().getParent());
		//在当前路径下创建一个临时文件
		File tmpFile=File.createTempFile("aaa", ".txt", file);
		//指定当JVM退出时删除该文件
		tmpFile.deleteOnExit();
		//以系统当前时间作为新文件名来创建新文件
		File newFile=new File(System.currentTimeMillis()+"");
		System.out.println("newFile对象是否存在:"+newFile.exists());
		//以指定newFile对象来创建一个文件
		newFile.createNewFile();
		//以newFile对象来创建一个目录,因为newFile已经存在,所以下面方法返回false,即无法创建该目录
		newFile.mkdir();
		//使用list方法来列出当前路径下的所有文件和路径,tmpFile临时文件也会列出,但程序结束之后目录下看不到该文件,因为JVM退出时删除了该文件
		String[]fileList=file.list();
		System.out.println("=====当前路径下所有文件和路径如下=====");
		for(String fileName:fileList){
			System.out.println(fileName);
		}
		//listRoots静态方法列出所有的磁盘跟路径
		File[]roots=File.listRoots();
		System.out.println("======系统所有根路径如下======");
		for(File root:roots){
			System.out.println(root);
		}
	}
}

File类的list方法,可以接受一个FilenameFilter参数,过滤显示指定的文件或目录,这种用法是一个典型的Command设计模式,因为File的list方法需要一个判断规则:判断哪些文件应该被列出——这段判断规则需要一个代码块,但由于JDK不支持直接向方法传入代码块,所以java使用了accept方法来封装该代码块。也就是说,我们传入的FilenameFilter对象的唯一作用就是传入accept方法的方法体,该方法体指定哪些文件应该被列出。使用方法如下:

package com.songguoliang.io;

import java.io.File;
import java.io.FilenameFilter;
/**
 * FilenameFilter类的使用
 * @date 2015-08-11 12:02:20
 * @author sgl
 */
public class FilenameFilterTest {
	public static void main(String[]args){
		//创建一个File实例
		File file=new File(".");
		//file的list方法可以接收FilenameFilter参数,传入自定义的filter,list方法会遍历调用filter的accept方法
		String[] nameList=file.list(new MyFilenameFilter());
		for(String name:nameList){
			System.out.println(name);
		}
	}

}
/**
 * 实现java.io.FilenameFilter接口的accept方法,自定义控制文件或目录是否显示
 * @date 2015-08-11 12:03:06
 * @author sgl
 */
class MyFilenameFilter implements FilenameFilter{
	/*
	 * java.io.FilenameFilter
	 * (non-Javadoc)
	 * @see java.io.FilenameFilter#accept(java.io.File, java.lang.String)
	 * @date 2015-08-11 12:04:44
	 * @author sgl
	 */
	@Override
	public boolean accept(File dir, String name) {
		//只包含.java后缀文件或目录
		return name.endsWith(".java")||new File(name).isDirectory();
	}

}

版权声明:本文为博主原创文章,转载请注明本文链接。文章内容如有错误望能指正,以免误导更多人。

时间: 2025-01-04 16:38:13

IO流学习笔记1——File类的相关文章

Java IO学习笔记:File类

File类 在整个IO包了,唯一表示与文件本身有关的类就是File类.使用File类可以进行1创建或删除文件等常用操作.要想使用File类.则首先要观察File类的构造方法,此类的      常用构造方法如下所示:public File(String pathname) 实例化File类的时候,必须设置好路径 No. 方法或常量 类型 描述 1 public static final String pathSeparator 常量 表示路径的分隔符(windows是“;”) 2 public s

黑马程序员——Java基础——IO流(二)——File类、Properties类、打印流、序列流

第一件 File类 一.File类 a.用于将文件或者文件夹封装成对象 b.方便对文件与文件夹的属性信息进行操作 c.File对象可以作为参数传递给流的构造函数 d.了解File类中的常用方法 二.File对象的创建 a.File f=new File("a:\\a.txt"): b.File f2=new File("C:\\abc","a.txt");//分开的好处是后一个参数能够使用其他对象如string c.File d=new File

Java IO流(第二讲):File类

File是基于磁盘操作的I/O,Java多数IO都是实行流式操作,但是File不是,它不会读取文件信息或者向文件存储,它是直接处理文件的,它不会读取文件信息或者向文件存储,File对象可以用来获取或处理与磁盘文件相关的信息,例如权限,时间,日期和目录路径.File类的名字比较欺骗性,它其实并不仅仅代表一个特定文件名字,也可以代表文件目录下一系列文件名,用File存储数据存在很大的安全性,但是文件仍是我们存储数据以及共享数据的主要工具. 下面我们来解读File类在Java中的运用方式. 首先,我们

IO流(一)File类

1.File类:表示文件和目录路径的抽象的表示形式,可以实现文件的创建,删除,重命名等,是唯一与文件本 有关的操作类. 2.File类的API定义:public class File extends Object implements Serializable,Comparable<File> 3.File类的操作方法: (1)访问文件名相关方法 String getName() : 获得文件名或路径名 String getPath() : 获得路径名 File getAbsoluteFile

.Net学习笔记----2015-06-25(File类的读写文件、List泛型集合、装箱和拆箱、Dictionary字典集合)

File类:静态类,Create Delete Copy Move ,主要用来对数据对文本文件进行读写 File类:缺点:只能读写小文件 读写操作: //byte[] buffer = File.ReadAllBytes(@"C:\Users\Administrator\Desktop\new.txt"); ////将字节数组中的每一个元素都要按照我们指定的编码各式解码成字符串 ////UTF-8 GB2312 GBK ASCII Unicode //string s = Encodi

java IO流学习笔记

import java.io.*;class hello{ public static void main(String[] args) { System.out.println(File.separator); System.out.println(File.pathSeparator); }}[运行结果]: \ ; String fileName="D:"+File.separator+"hello.txt"; File f=new File(fileName)

IO流学习笔记3——字节流和字符流的输入/输出

字节流和字符流的操作方式基本一样,区别只是操作的数据单元有区别:字节流操作的数据单元是字节,字符流操作的数据单元字符. InputStream和Reader是所有输入流的基类,它们两个都是抽象类,本身不能创建实例,但它们分别有一个用于读取文件的输入流:FileInputStream和FileReader,它们都是节点流. OutputStream和Writer是所有输出流的基类,和输入流相似,也有对应的输出流:FileOutputStream和FileWriter,它们也是节点流. 1.使用Fi

黑马程序员——Java I/O流基础知识点(File类)

File工具 File类就是用俩将文件或者文件夹封装对象,弥补流对象的不足--流只能操作数据,不能操作文件夹的 封装的是路径!!! 构造方法演示 1.可以将已有的未出现的文件或者文件夹封装成对象. File f1=new File("c:\\abc\\a.txt"): File f2=new File("d:\\abc","ab.txt"打印,会打印路径.:目录分隔符,为了更好地跨平台File. File类常见功能 1,创建 createNewF

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详细,自己在看它的文档和代码时写了一些demo和笔记,还有它实现的原理记录一下 学习Caliburn.Micro要有MEF和MVVM的基础 先说一下他的命名规则和引导类 以后我会把Caliburn.Micro的 Actions IResult,IHandle ICondu