Java IO2

访问文件

字节流

## 字节输入流【FileInputStream】

字节输入流读取文件的实现步骤:
1.关联实体文件,创建FileInputStream对象
2.调用read方法
3.关闭输入流【close】
API
1.字节输入流对象,使用构造函数:
FileInputStream(File file)
返回一个字节输入流对象,该对象使用字节流读取文件,参数为File类型关联实体文件
FileInputStream(String name)
返回一个字节输入流对象,传入的name为路径+文件名

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

3.关闭输入流对象
void close()
关闭输入流对象
代码示例
单个字节读取
FileInputStream inputStream = new FileInputStream(new File
(“D:/work/STS/JavaSE-Day24-IO/1.txt”));

//System.out.println(inputStream.read());
//System.out.println((char)inputStream.read());

//循环遍历读取数据
int n;
while ((n=inputStream.read())!=-1) {
System.out.println((char)n);
}
//关闭输入流
inputStream.close();
多个字节读取,采用byte类型数组为缓冲区,若缓冲区不能被数据长度整除则可能造成数据重复输出
FileInputStream inputStream = new FileInputStream
(“D:/work/STS/JavaSE-Day24-IO/1.txt”);
byte[] b=new byte[4];

//将字节数组打印输出
for (byte c : b) {
System.out.println((char)c);
}
int n;
while ((n=inputStream.read(b))!=-1) {
System.out.println(new String(b));
}
//关闭输入流
inputStream.close();
多个字节读取,解决数据重复问题
FileInputStream inputStream = new FileInputStream
(“D:/work/STS/JavaSE-Day24-IO/1.txt”);

// 定义读取数据的缓冲区
byte[] b = new byte[4];

//循环读取并输出
int n;
while ((n = inputStream.read(b)) != -1) {
System.out.println(new String(b,0,n));
}
//关闭输入流
inputStream.close();
多个字节读取,对数组缓冲区进行设置
使用read(byte[] b,int off,int len)
参数2和参数3是针对缓冲区进行设置,相加的值不能大于等于数组长度
FileInputStream inputStream = new FileInputStream
(“D:/work/STS/JavaSE-Day24-IO/1.txt”);

// 定义读取数据的缓冲区
byte[] b = new byte[4];

//循环读取并输出
int n=0;
while ((n = inputStream.read(b,1,2)) != -1) {
System.out.println(new String(b));
}
//关闭输入流
inputStream.close();

## 字节输出流【FileOutputStream】

字节流输出数据的代码实现步骤:
1.关联实体文件,创建输出流对象
2.调用write方法
3.关闭输出流
API
1.字节输出流对象,构造函数:
FileOutputStream(File file)
返回一个字节输出流对象,参数为File类型关联实体文件
FileOutputStream(String name)
返回一个字节输出流对象,参数为String类型,取值为路径+文件名

向文件中设置是否追加数据:
FileOutputStream(File file, boolean append)
返回一个字节输出流对象,参数1File类型关联实体文件,参数2布尔值true代表追加
FileOutputStream(String name, boolean append)
返回一个字节输出流对象,参数1String类型关联实体文件,参数2布尔值true代表追加
2.字节输出流对象输出数据到指定文件:
注意:
如果输出的路径不存在会抛出异常,如果输出的路径存在而文件不存在则会创建新的文件
如果不需要对输出的文件进行追加效果,那么需要在创建输出流对象的时候添加布尔值

void write(int b)
将指定字节写入文件输出流中
void write(byte[] b)
将指定的byte数组中的数据写入到文件
void write(byte[] b,int off,int len)
将指定byte数组中的数据指定起始位置和长度的数据输出到文件中
3.关闭字节输出流对象:
void close()
关闭文件输出流
代码示例
注意事项:
如果输出的文件路径不存在,则抛出异常
如果输出的文件不存在,则自动创建新的文件
如果输出流对象没有设置追加,且输出路径和文件是一致的,则会覆盖前次的输出内容
使用FileOutputStream(File file)创建对象输出数据到文件:
FileOutputStream fos = new FileOutputStream
(new File(“D:/work/STS/JavaSE-Day24-IO/2.txt”));
fos.write(97); //97 是ASCII码值,文件中写入的是a
fos.close();
使用FileOutputStream(String name)创建对象输出数据到文件:
FileOutputStream fos = new FileOutputStream
(“D:/work/STS/JavaSE-Day24-IO/2.txt”);
byte[] b=“abcdefghijk”.getBytes();
fos.write(b); //传入的是一个byte类型的数组
fos.close();
FileOutputStream(File file,boolean append)创建追加输出流对象:
FileOutputStream fos = new FileOutputStream
(“D:/work/STS/JavaSE-Day24-IO/2.txt”,true);
byte[] b=“0123456789”.getBytes();
fos.write(b, 2, 6);
fos.close();
FileOutputStream(String name,Boolean append)创建追加输出流对象:
FileOutputStream fos = new FileOutputStream
(“D:/work/STS/JavaSE-Day24-IO/2.txt”, true);
byte[] b=“0123456789”.getBytes();
fos.write(b, 2, 2);
fos.close();

字符流

## 字符输入流【FileReader】

字符输入流读取文件的实现步骤:
1.关联实体文件,创建FileReader对象
2.调用read方法
3.关闭输入流【close】
API

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

2.使用字符输入流对象读取文件:
字符输入流对象在读取到最终的数据结尾时,返回-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相加的值不能大于等于数组的长度,否则会引发下标异常

3.关闭输入流对象
void close()
关闭输入流对象
代码示例
单个字符读取
FileReader fr = new FileReader(new File
(“D:/work/STS/JavaSE-Day24-IO/1.txt”));

//System.out.println(fr.read());

//循环遍历读取数据
int n;
while ((n=fr.read())!=-1) {
System.out.println((char)n);
}
//关闭输入流
fr.close();
多个字节读取,采用byte类型数组为缓冲区,若缓冲区不能被数据长度整除则可能造成数据重复输出
FileReader fr = new FileReader(“D:/work/STS/JavaSE-Day24-IO/1.txt”);
char[] c=new char[4];

//将字节数组打印输出
for (char c : b) {
System.out.println((char)c);
}
int n;
while ((n=fr.read(b))!=-1) {
System.out.println©;
}
//关闭输入流
fr.close();
多个字节读取,对数组缓冲区进行设置
使用read(char[] c,int off,int len)
参数2和参数3是针对缓冲区进行设置,相加的值不能大于等于数组长度
FileReader fr = new FileReader(“D:/work/STS/JavaSE-Day24-IO/1.txt”);

// 定义读取数据的缓冲区
char[] b = new char[4];

//循环读取并输出
int n=0;
while ((n = fr.read(c,1,2)) != -1) {
System.out.println©;
}
//关闭输入流
fr.close();

## 字符输出流【FileWriter】

字符流输出数据的代码实现步骤:
1.关联实体文件,创建输出流对象
2.调用write方法
3.关闭输出流
API
1.字符输出流对象,构造函数:
FileWriter(File file)
返回一个字符输出流对象,参数为File类型关联实体文件
FileWriter(String name)
返回一个字符输出流对象,参数为String类型,取值为路径+文件名

向文件中设置是否追加数据:
FileWriter(File file, boolean append)
返回一个字符输出流对象,参数1File类型关联实体文件,参数2布尔值true代表追加
FileWriter(String name, boolean append)
返回一个字符输出流对象,参数1String类型关联实体文件,参数2布尔值true代表追加
2.字符输出流对象输出数据到指定文件:
注意:
如果输出的路径不存在会抛出异常,如果输出的路径存在而文件不存在则会创建新的文件
如果不需要对输出的文件进行追加效果,那么需要在创建输出流对象的时候添加布尔值

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)
指定字符串的起始位置和长度,输出到指定的文件中
3.关闭字节输出流对象:
void close()
关闭文件输出流
代码示例
注意事项:
如果输出的文件路径不存在,则抛出异常
如果输出的文件不存在,则自动创建新的文件
如果输出流对象没有设置追加,且输出路径和文件是一致的,则会覆盖前次的输出内容
使用FileWriter(File file)创建对象输出数据到文件:
FileWriter fw = new FileWriter
(new File(“D:/work/STS/JavaSE-Day24-IO/2.txt”));
fw.write(97); //97 是ASCII码值,文件中写入的是a
fw.close();
使用FileWriter(String name)创建对象输出数据到文件:
FileWriter fw = new FileWriter(“D:/work/STS/JavaSE-Day24-IO/2.txt”);
char[] c={‘我’,‘你’};
fw.write©; //传入的是一个char类型的数组
fw.close();
FileWriter(File file,boolean append)创建追加输出流对象:
FileWriter fw = new FileWriter
(new File(“D:/work/STS/JavaSE-Day24-IO/2.txt”),true);
char[] c={‘我’,‘你’};
fw.write(c, 0, 1);
fw.close();
FileWriter(String name,Boolean append)创建追加输出流对象:
FileWriter fos = new FileWriter(“D:/work/STS/JavaSE-Day24-IO/2.txt”, true);
char[] c={‘我’,‘你’};
fw.write(c, 0, 1);
fw.close();
直接将字符串输出到文件中
FileWriter fw = new FileWriter(“D:/work/STS/JavaSE-Day24-IO/2.txt”,true);
fw.write(“今晚小树林”);
fw.close();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值