IO流
知识回顾:
一、使用IO操作,首先要明确一下四点:
1、明确是读,还是写?
2、明确操作对象时字节还是文本?
3、明确数据所在的具体位置?
4、明确是否对数据进行转换等操作?
二、File
所在包java.io.File,
首先需明确操作对象为文件,而非文件里的内容。
其次需明白对应的操作:创建,删除和查找等操作
-------------------------------------------------------------------
那么怎么创建对象呢?下面提供三种方式
假设改路径--------C:\\weixin\\dog.jpg
1、new File("C:\\weixin\\dog.jpg");2、new File("C:\\weixin","dog.jpg");3、File parent = new File("C:\\weixin");new File(parent,"dog.jpg");
需注意:File对象创建的过程中,不会检验路径是否存在,它都会听话的自己创建对应的文件,哈哈哈哈,是不是好蠢。
2、下面说下常用方法
getAbsolutePath:获取绝对路径;getPath:获取路径(二者没发现差别);getName:获取文件名;getLength:获取文件大小
注意点:绝对路径和相对路径,绝对路径包括盘符,相对路径反之;路径中使用反斜杠,在java中反斜杠代表转移,所以两个反斜杠代表一个斜杠,所以和电脑路径有区别
a、判断方法:
exists:判断文件或目录是否存在;isDirectiory:判断是否为目录;isFile:判断是否是文件。
b、创建和删除方法:
createNewFIle:创建文件,文件已存在返回true,反之返回false;delete:File对象进行删除操作;mkdir:File对象进行创建一级文件;mkdirs:创建多级文件;
注意:createNewFile、mkdir和mkdirs的区别
c、遍历方法:
list:返回string数组,得到文件及目录的名称;listFiles返回File对象数组。
注意:listFiles指定路径必须存在;
三、下面通过一个例子对上面方法做个总结
递归遍历文件夹下所有的文件及子文件
代码如下:
public class RecursionDirectory {
public static void main(String[] args) {
File file=new File("D:\\java专属IO测试");
Recursion(file);
}
public static void Recursion(File file){
//1、判断传入的是否是目录
if(!file.isDirectory()){
//不是目录直接退出
return;
}
//已经确保了传入的file是目录
File[] files = file.listFiles();
//遍历files
for (File f: files) {
//如果该目录下文件还是个文件夹就再进行递归遍历其子目录
if(f.isDirectory()){
//递归
Recursion(f);
}else {
//如果该目录下文件是个文件,则打印对应的名字
System.out.println(f.getName());
}
}
}
}
四、初次见面IO流,存在java.io包下
何为IO:写代码和保存代码就为一次IO操作,读和写操作。
根据流向,分为输入和输出流;根据数据类型,分为字节流和字符流;下面的抽象表格做个说明
输入流 输出流
字节流 InputStream OutputStream
字符流 Reader Writer
后面就会发现:这些类的子类,基本都以父类作为后缀
例如:FileInputStream和FileReader
下面直奔FileOutputStream:文件输出流,两种创建方式:new FileOutputStream("a.txt")或者new FileOutputStream(File file);第一种最常用

浙公网安备 33010602011771号