io流

IO流

File

构造方法

File(String pathname)
根据一个路径得到File对象
File(String parent, String child)
根据一个目录和一个子文件/目录得到File对象
File(File parent, String child)
根据一个父File对象和一个子文件/目录得到File对象

File类的创建功能

boolean mkdir()
创建文件夹,如果存在这样的文件夹,就不创建了,路径不存在返回flase
boolean mkdirs()
创建文件夹,如果父文件夹不存在,会帮你创建出来
boolean createNewFile()
创建文件,路径不存在抛出异常,如果存在这样的文件,就不创建了

File类的获取功能

String getAbsolutePath()
获取文件的绝对路径
File getAbsoluteFile()
获取文件的绝对路径
String getPath()
获取文件的相对路径
String getName()
获取名称
String[] list()
获取指定目录下的所有文件或者文件夹的名称数组
File[] listFiles()
获取指定目录下的所有文件或者文件夹的File数组
File[] listRoots()
获取电脑中的盘符
String[] list (FilenameFilter filter)
获取指定目录下被FilenameFilter筛选后的文件,返回String类型数组

File类的判断功能

判断当前File类型是否是一个文件夹,isDirectory()
判断当前File类型是否是一个文件,isFile()

File类的删除功能

boolean delete()
若是文件就直接删除,若是文件夹则必须是空文件夹

递归

public static int f(int x){
if (x == 0) {
return 0;
}else if (x == 1) {
return 1;
}
return f(x-1)+f(x-2);
}

字节输入流【FileInputStream】

1.关联实体文件,创建FileInputStream对象
2.调用read方法
3.关闭输入流【close】

构造方法

FileInputStream(File file)
返回一个字节输入流对象,该对象使用字节流读取文件,参数为File类型关联实体文件
FileInputStream(String name)
返回一个字节输入流对象,传入的name为路径+文件名

字节

字节输出流【FileOutputStream】

1.关联实体文件,创建输出流对象
2.调用write方法
3.关闭输出流

FileOutputStream(File file)
返回一个字节输出流对象,参数为File类型关联实体文件
FileOutputStream(String name)
返回一个字节输出流对象,参数为String类型,取值为路径+文件名

向文件中设置是否追加数据:
FileOutputStream(File file, boolean append)
返回一个字节输出流对象,参数1File类型关联实体文件,参数2布尔值true代表追加
FileOutputStream(String name, boolean append)
返回一个字节输出流对象,参数1String类型关联实体文件,参数2布尔值true代表追加

字符流

字符输入流【FileReader】

1.关联实体文件,创建FileReader对象
2.调用read方法
3.关闭输入流【close】

使用构造函数:

FileReader(File file)
返回一个字符输入流对象,该对象使用字符流读取文件,参数为File类型关联实体文件
FileReader(String name)
返回一个字符输入流对象,传入的name为路径+文件名

使用字符输入流对象读取文件:

字符输入流对象在读取到最终的数据结尾时,返回-1
int read()
单字符读取文件,返回读取的下一次的数据字符数,若下一次读取没有数据则返回为-1
int read(char[] c)
多字符读取文件,读取指定数组长度的数据字符,若下一次读取没有数据则返回为-1
多字符读取时,使用byte类型的数组作为缓冲区,可能会存在数据重复问题
int read(char[] c,int off,int len)
多字符读取文件,读取指定数组长度的数据字符,若下一次读取没有数据则返回为-1
参数2和参数3是针对数组缓冲区进行的设置
参数off:从缓冲区数组第几个下标开始读取
参数len:从缓冲区数组中读取指定长度的数据
注意:参数2和参数3相加的值不能大于等于数组的长度,否则会引发下标异常

字符输出流【FileWriter】

1.关联实体文件,创建输出流对象
2.调用write方法
3.关闭输出流

字符输出流对象,构造函数:

FileWriter(File file)
返回一个字符输出流对象,参数为File类型关联实体文件
FileWriter(String name)
返回一个字符输出流对象,参数为String类型,取值为路径+文件名

向文件中设置是否追加数据:
FileWriter(File file, boolean append)
返回一个字符输出流对象,参数1File类型关联实体文件,参数2布尔值true代表追加
FileWriter(String name, boolean append)
返回一个字符输出流对象,参数1String类型关联实体文件,参数2布尔值true代表追加

字符输出流对象输出数据到指定文件

注意:
如果输出的路径不存在会抛出异常,如果输出的路径存在而文件不存在则会创建新的文件
如果不需要对输出的文件进行追加效果,那么需要在创建输出流对象的时候添加布尔值

void write(int b)
将指定字符写入文件输出流中
void write(char[] c)
将指定的char数组中的数据写入到文件
void write(char[] c,int off,int len)
将指定char数组中的数据指定起始位置和长度的数据输出到文件中
void write(String str)
将字符串输出到指定的文件中
void write(String str,int off,int len)
指定字符串的起始位置和长度,输出到指定的文件中

转换流

字节流转字符流【InputStreamReader】

字节流转成字符流的步骤:
1.准备一个字节流
2.将字节流转成字符流输出
3.关闭流
API

将字节流转换为字符流,使用InputStreamReader构造函数
InputStreamReader(InputStream in)
将字节流对象包装成一个InputStreamReader对象,默认使用本机字符编码
InputStreamReader(InputStream in,String charset)
将字节流对象包装成一个InputStreamReader对象,使用指定的编码格式
代码示例
先使用字节流读取包含中文的文件并输出
FileInputStream fis = new FileInputStream
(“D:/work/STS/JavaSE-Day24-IO/src/cn/itsource/readerandwriter/ReaderAndWriterTest.java”);

byte[] b=new byte[4];
int len;

StringBuilder build=new StringBuilder();
while ((len=fis.read(b))!=-1) {
build.append(new String(b));
}

System.out.println(build.toString());
fis.close();

字符流转字节流【OutputStreamWriter】

字符流转字节流步骤:
1.准备一个字符流
2.将字符流转换为字节流
3.关闭流
API

将字符流转换为字节流:
OutputStreamWriter(OutputStream out)
将一个字符流中的数据内容写入到转换为显示指定的字节流对象
OutputStreamWriter(OutputStream out,String charset)
使用指定的编码格式将字符流转换为字节流
代码示例
字符流输出数据到文件中,使用字节流关联文件
FileOutputStream fos = new FileOutputStream
(“D:/work/STS/JavaSE-Day24-IO/5.txt”); //字节流关联实体文件

OutputStreamWriter osw = new OutputStreamWriter(fos); //字符流输出
osw.write(“输出中文”);

osw.close();
fos.close();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值