黑马程序员技术交流社区
标题:
【石家庄校区】File类、IO流
[打印本页]
作者:
wangxl
时间:
2019-5-7 14:45
标题:
【石家庄校区】File类、IO流
1.1File类概述和构造方法
File类介绍
它是文件和目录路径名的抽象表示
文件和目录是可以通过File封装成对象的
对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已.它可以是存在的,也可以是不存在的.将来是要通过具体的操作把这个路径的内容转换为具体存在的
构造方法
File f = new File(String pathname);
File f = new File(String parent, String child);
File f = new File(File parent, String child);
1.2File类创建功能
public boolean creatNewFile();
public boolean mkdir();
public boolean mkdirs();
1.3File类判断、获取、删除功能
public boolean isDirectory();
public boolean isFile();
public boolean exists();
public String getAbsoluetePath();
public String getPath();
public String getName();
public String[] list();
public File[] listFiles();
public boolean delete();
递归
介绍
以编程的角度来看,递归指的是方法定义中调用方法本身的现象
递归的注意事项
递归一定要有出口。否则内存溢出
递归虽然有出口,但是递归的次数也不宜过多。否则内存溢出
案例需求
给定一个路径(E:\itcast),通过递归完成遍历该目录下所有内容,并把所有文件的绝对路径输出在控制台
public class DiGuiDemo02 {
public static void main(String[] args) {
//根据给定的路径创建一个File对象
// File srcFile = new File("E:\\itcast");
File srcFile = new File("E:\\itheima");
//调用方法
getAllFilePath(srcFile);
}
//定义一个方法,用于获取给定目录下的所有内容,参数为第1步创建的File对象
public static void getAllFilePath(File srcFile) {
//获取给定的File目录下所有的文件或者目录的File数组
File[] fileArray = srcFile.listFiles();
//遍历该File数组,得到每一个File对象
if(fileArray != null) {
for(File file : fileArray) {
//判断该File对象是否是目录
if(file.isDirectory()) {
//是:递归调用
getAllFilePath(file);
} else {
//不是:获取绝对路径输出在控制台
System.out.println(file.getAbsolutePath());
}
}
}
}
}
IO流
1. FileOutputStream 字节输出流
FileOutputStream fos = new FileOutputStream(" 路径名 ");
write( int b );
write( byte[] b );
write( byte[] b, int off, int len );
\r\n 换行
(" 路径名 ",ture); 追加写入文件末尾
异常处理格式 :try-catch-finally { 执行所有清除操作; }
2. FileInputStream 字节输入流
FileInputStream fis = new FileInputStream(" 路径名 ");
FileInputStream fis = new FileInputStream("路径名");
int by;
/*
fis.read():读数据
by=fis.read():把读取到的数据赋值给by
by != -1:判断读取到的数据是否是-1
*/
while ((by=fis.read())!=-1) {
System.out.print((char)by);
}
//释放资源
fis.close();
字节流读数据(一次读一个字节数组)
FileInputStream fis = new FileInputStream("文件路径名");
byte[] bys = new byte[1024]; //1024及其整数倍
int len;
while ((len=fis.read(bys))!=-1) {
System.out.print(new String(bys,0,len));
}
//释放资源
fis.close();
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2