IO流一
1.File类
1.1 概述
1.1.1 File类出现的必要性
存储在变量、数组和对象中的数据是暂时的,当程序终止他们时就会丢失,为了能够永久地保存程序中创建的数据,需要将他们存储到硬盘或光盘的文件,这些文件可以移动,传送,亦可以被其他程序使用。由于数据存储在文件中,所以我们要掌握它,就需要学习一种与文件密切相关的类,叫做File类。
定义
File类描述的是一个文件或文件夹(也可叫目录)。
1.1.2构造一个File类的实例(File的构造函数)
注:
1)File 对象没有无参构造方法,创建对象需要传参。
2)创建File对象需要导包,import java.io.File
3)File类的对象,既可以代表文件也可以代表文件夹。
1.2 路径
路径就是文件或文件夹所在的位置
1.2.1 路径分割符
上下级文件夹之间使用分隔符分开。
在windows中分隔符为‘\’,在Unix/Linux中分隔符为‘/’
专业的做法是File.separatorChar – 这个值会根据系统得到相应的分割符。
如 new File(“C:”+File.separatorChar+ “file.txt’);
1.2.2 绝对路径与相对路径
对于UNIX平台,绝对路径名的前缀是“/”。相对路径名没有前缀。
绝对路径
对于Windows平台,绝对路径的前缀由驱动器号和一个“:”组成,例:“c:\\...”。相对路径没有盘符前缀
相对路径
相对路径是指相对于某位置的路径,是指相对于当前目录。在执行Java程序时,相对路径为执行javav命令时当前所在的目录。
注:一般在使用时,建议使用绝对路径,相对路径容易出问题
1.3 File类的常用方法
代码实例:
1)列出指定目录下的所有子文件名与所有子目录名
package com.ping.File;
import java.io.File;
public class FileDemo1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//指定目录还有系统指定的分隔符
listAllFilesAndDir("E:"+File.separatorChar + "Java基础资料");
}
//将方法封装
public static void listAllFilesAndDir(String path){
File dir = new File(path);
//将指定文件夹里的文件封装成一个文件数组
File [] names = dir.listFiles();
System.out.println("该目录里有:");
//循环输出文件名
for(int i = 0 ; i < names.length ; i ++){
File file = names[i];
System.out.println(file.getName());
}
}
}
输出
该目录里有:
java毕向东java基础
学通Java的24堂课
学通Java的24堂课_120集大型多媒体教学视频.iso
魔乐科技
2)列出指定目录中所有的子文件名与所有的子目录名,目录与文件分开输出
package com.ping.File;
import java.io.File;
public class FileDemo1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//指定目录还有系统指定的分隔符
listAllFilesAndDir("E:"+File.separatorChar + "Java基础资料");
}
//将方法封装
public static void listAllFilesAndDir(String path){
File dir = new File(path);
//将指定文件夹里的文件封装成一个文件数组
File [] names = dir.listFiles();
System.out.println("该目录里有:");
System.out.println("文件");
//循环输出文件夹中的文件
for(int i = 0 ; i < names.length ; i ++){
File file = names[i];
//判断是否是文件
if(file.isFile()){
System.out.print( file.getName());
}
}
System.out.println("\n文件夹");
//循环输出文件夹中的子文件夹
for(int i = 0 ; i < names.length ; i ++){
File files = names[i];
//判断是否是文件夹
if(files.isDirectory()){
System.out.println(files.getName() );
}
}
}
}
输出:
该目录里有:
文件
学通Java的24堂课_120集大型多媒体教学视频.iso
文件夹
java毕向东java基础
学通Java的24堂课
魔乐科技
3)列出目录中所有扩展名为.java的文件
package com.ping.File;
import java.io.File;
public class FileDemo2 {
public static void main(String [] args){
String path = "H:" + File.separatorChar + "day13";
File file = new File(path);
listFiles(file,"java");
}
public static void listFiles(File dir , String extension){
//将目录文件放到一个数组中
File [] files = dir.listFiles();
//输出目录
for(int i = 0 ; i < files.length; i ++ ) {
File file = files[i];
//满足条件即输出
if(file.getName().endsWith(extension)){
System.out.println(file.getName());
}
}
}
}
输出:
CollectionDemo.java
CollectionDemo_2.java
CollectionDemo_3.java
CollectionDemo_4.java
4)用FilenameFIlter接口写一个工具类,这样就可以过滤各种后缀的文件
package com.ping.File;
import java.io.File;
import java.io.FilenameFilter;
public class FileDemo3 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method s