输入输出流 ——JavaIO流

输入输出流

——JavaIO流

  • IO的概念

Java IO即Java 输入输出系统。

I(Input)/O(OutPut) 数据的流动

  • 流的分类

1.输入

字节输入流:InPutStream

字符输入流:reader

2.输出

字节输出流:OutPutStream

字符输出流:writer

  • File类

文件和目录路径名的抽象表示形式。

通过代码对文件进行操作。

  1. File类的构造方法

File(String pathname)

根据一个路径得到File对象

File(String parent, String child)

根据一个目录和一个子文件/目录得到File对象

File(File parent, String child)

根据一个父File对象和一个子文件/目录得到File对象

  1. File类的创建功能

单级文件夹创建

boolean mkdir()

创建文件夹,如果存在这样的文件夹,就不创建了,路径不存在返回flase

 

多级文件夹创建

boolean mkdirs()

创建文件夹,如果父文件夹不存在,会帮你创建出来

创建文件

boolean createNewFile()

创建文件,路径不存在抛出异常,如果存在这样的文件,就不创建了

  1. File类的获取功能

String getAbsolutePath()

获取文件的绝对路径

File getAbsoluteFile()

获取文件的绝对路径

String getPath()

获取文件的相对路径

String getName()

获取名称

String[] list()

获取指定目录下的所有文件或者文件夹的名称数组

File[] listFiles()

获取指定目录下的所有文件或者文件夹的File数组

File[] listRoots()

获取电脑中的盘符

String[] list (FilenameFilter  filter)

获取指定目录下被FilenameFilter筛选后的文件,返回String类型数组

 

路径: 绝对路径:带盘符的

相对路径:默认就是当前目录 ./:代表当前目录 ../:上一层目录

 

  1. File类的判断功能

boolean  exists()

判断路径表示的文件或者文件夹是否存在

boolean  isDirectory()

判断当是否是一个文件夹

boolean  isFile()

判断当前是否是一个文件

boolean isHidden()

测试此抽象路径名指定的文件是否是一个隐藏文件。

  1. File类的删除功能

boolean delete()

若是文件就直接删除,若是文件夹则必须是空文件夹

 

例:

delFileOrDir(new File("F:/xx"));

public static void delFileOrDir(File file) {

if (file.isDirectory()) {//判断有无内容(文件夹)

File[] listFiles = file.listFiles();

for (File file2 : listFiles) {

delFileOrDir(file2);//递归调用自己

}

}

file.delete();

}

  • 递归

递归:本质上就是方法自己调用自己

注意: 1.每一次方法的执行都是独立

2.方法出口

案例:

斐波拉契数列,假设有函数f(x)且f(0)=0、f(1)=1,第x个值公式为f(x)=f(x-1)+f(x-2),根据以上给出的条件实现x为任意数时的值的代码实现

public static int f(int x){

if (x == 0) {

return 0;

}else if (x == 1) {

return 1;

}

return f(x-1)+f(x-2);

}

  • 文件的过滤

public interface FilenameFilter

实现此接口的类实例可用于过滤器文件名。

其中的方法:

boolean accept(File dir,String name)

测试指定文件是否应该包含在某一文件列表中。

参数:

dir - 被找到的文件所在的目录。

name - 文件的名称。

 

示例:

File file = new File("F:/xx");

String[] list = file.list(new MyFiler());

System.out.println(Arrays.toString(list));

class MyFiler implements FilenameFilter{

@Override

public boolean accept(File dir, String name) {

return name.endsWith(".doc");

}

}

  • IO流分类

整体API分类:

按照功能进行API分类:

 

  • 对文件内容操作
  1. 字节流
  1. 字节输入流【FileInputStream】

字节输入流读取文件的实现步骤:

  • 关联实体文件,创建FileInputStream对象
  • 调用read方法,返回值:文件末尾 -1
  • 关闭输入流【close】,先开的后关,后开的先关
  1. 字节输出流【FileOutputStream】

字节流输出数据的代码实现步骤:

  • 关联实体文件,创建输出流对象
    1. 1.文件不存在:自动创建2.路径不存在:报错true:追加false:覆盖
  • 调用write方法
  • 关闭输出流
  1. 字符流
  1. 字符输入流【FileReader】

字符输入流读取文件的实现步骤:

  • 关联实体文件,创建FileInputStream对象
  • 调用read方法,返回值:文件末尾 -1
  • 关闭输入流【close】,先开的后关,后开的先关
  1. 字符输出流【FileWriter】

字节流输出数据的代码实现步骤:

  • 关联实体文件,创建输出流对象
    1. 1.文件不存在:自动创建2.路径不存在:报错true:追加false:覆盖
  • 调用write方法
  • 关闭输出流
  • 转化流
  1. 使用的场景

在原来的系统上进行升级的时候

  1. 字节输入流转换为字符输入流【InputStreamReader】

字节流转成字符流的步骤:

  1. 准备一个字节流
  2. 将字节流转成字符流输出
  3. 关闭流
  1. 字节输出流转字符输出流【OutputStreamWriter】
  1. 准备一个字符流
  2. 将字符流转换为字节流
  3. 关闭流

 

转载于:https://my.oschina.net/u/4083057/blog/3027669

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值