**
IO流的基本操作
1.字节流读文件
注意:要抛出异常否则回报错
字节流读写文件
InputStream是字节输入流的顶级抽象父类,不能被实例化,所以要用InputStream的子类
针对文件的读写,一般用FileInputStream和FileOutStream
1.创建fileInputStream对象并往对象输入需要读取的文件路径
2.调用fileInputStream的read()方法,该方法返回 0-255 的值(其实就是字符对应的ASCII值),返回-1表示结束,
注意:read()每次只能返回一个值,所以要用循环
3.关闭资源
``
FileInputStream fileInputStream = new FileInputStream(“f:/s.txt”);
int t=0;
while ((t=fileInputStream.read())!=-1){ //-1表示文件读取完毕
System.out.println(t);
}
fileInputStream.close();
### 1.2read(byte[] b)方法的使用
read(byte[] b)方法比read()方法效率更快。
通过定义一个数组,把字节装进数组后在运输,比一次运输一个字节强
该函数返回的int表示读取的长度,返回-1表示读取完毕
然后用String函数输出文件的内容
FileInputStream fileInputStream = new FileInputStream(“f:/s.txt”); //文件要存在不然会有问题
byte[] bytes = new byte[1024];
int len=0;
while((len=fileInputStream.read(bytes))!=-1)
{
String str=new String(bytes);//字节数组转化成字符串
System.out.println(str);
}
fileInputStream.close();
## 2.字节流写文件
#### 2.1FileOutputStream
FileOutputStream对象会自动创建文件,通过write()方法写入数据,如果文件已经存在就会覆盖原来的数据
解决方法在FileOutputStream的构造函数中加一个true如
FileOutputStream(“f:/s.txt”,true);
FileOutputStream outputStream=new FileOutputStream(“f:/s.txt”); //会自动创建文件
FileOutputStream utputStream=new FileOutputStream(“f:/s.txt”,true);//不会覆盖原来文件的数据,新增加的数据会在原数据的基础上添加
String str=“我是你爸爸!”;
byte[] b=str.getBytes();//因为一次只能写入一个字节,所以要循环
for(int i=0;i<b.length;i++){
outputStream.write(b[i]);
}
outputStream.close();//关闭资源
注意:OutputStream的是FileOutputStream的顶级抽象父类,且write()方法有好几种,可百度
## 3.文件的复制:
思路:
1.创建输入流对象
2.创建输出流对象
3.把输入流读到的数据写入输出流
FileInputStream fileInputStream = new FileInputStream(“f:/s.txt”);//要读取的文件的路径
FileOutputStream fileOutputStream=new FileOutputStream(“f:/ss.txt”);//要复制到哪个文件的路径
byte[] bytes = new byte[1024];
int len=0;
while((len=fileInputStream.read(bytes))!=-1) //读取完毕会跳出循环
{
fileOutputStream.write(bytes,0,len);
String str=new String(bytes);
System.out.println(str);
}
fileInputStream.close();
fileOutputStream.close();
## 4.字符流操作文件
- Reader是字符输入流顶级抽象父类,用于读取字符
- Writer是字符输出流顶级抽象父类,用于写入字符
- FileReader和FileWriter分别是Reader,Writerd的子类,一般用这两个类来实现文件的读写
### 4.1FileReade
> FileReader fileReader = new FileReader("f:/s.txt");
>
> int ch=0;
>
> while ((ch=fileReader.read())!=-1){
>
> System.out.println((char)ch);
>
> //因为字符流的read()返回的是int类型使用类型转化为char类型
>
> }
>
> fileReader.close();
### 4.2FileWriter
//FileWriter writer = new FileWriter(“f:/a.txt”); //f:\a.txt也行
FileWriter writer1 = new FileWriter(“f:/a.txt”,true); //f:\a.txt也行
String str=“我是你大爷!!!”;
writer1.write(str);
//writer.close();
writer1.close();
### 4.3缓冲流
FileReader fileReader = new FileReader(“f:/s.txt”);
BufferedReader reader=new BufferedReader(fileReader);//字符输入缓冲流
FileWriter writer = new FileWriter(“f:/a.txt”);
BufferedWriter b=new BufferedWriter(writer); //字符输出缓冲流
String str;
while ((str=reader.readLine())!=null)
{
b.write(str);
//b.newLine();
}
reader.close();
b.close();
### 4.4转换流
<u>InputStreamReader:</u>将字节输入流转换为字符输入流
<u>OutputStreamWriter:</u>Writer的子类,将一个字节输出流转换为字符输出流
FileInputStream in=new FileInputStream(“f:/a.txt”);
InputStreamReader inr=new InputStreamReader(in); //转换
BufferedReader br=new BufferedReader(inr); //字符流缓冲区
FileOutputStream out=new FileOutputStream(“f:/s.txt”);
OutputStreamWriter outw=new OutputStreamWriter(out);
BufferedWriter bw=new BufferedWriter(outw);
String str;
while((str=br.readLine()) != null){
bw.write(str);
}
br.close();
bw.close();
本文详细介绍了Java中IO流的基本操作,包括字节流的文件读写、FileInputStream和FileOutputStream的应用,以及字符流(FileReader和FileWriter)的使用,涵盖了流复制、缓冲流和转换流等内容。
4272

被折叠的 条评论
为什么被折叠?



