内容
1.字节输出流
2.使用字节输入流和字节输出流进行文件复制粘贴
3.字符输入流
4.字符输出流
5.使用字符输入流和字符输出流进行文件复制粘贴
FileOutStream是将计算机内存中的数据写入硬盘文件中
一.字节输出流
1.注意:
①字节输出流是把内存中的数据写入到硬盘文件中
②无文件时会自动创建
③注意要以追加的方式创建字节输出流
④后面最好flush一下
⑤注意使用的一些格式,特别是trycatch的使用
2.使用示例
import java.io.*;
public class 测试程序 {
public static void main(String[] args) throws IOException {
FileOutputStream fos = null;
try {
//1.创建文件字节输出流
//这种创建方式要谨慎使用,因为它会将原文件内容覆盖
//fos = new FileOutputStream("temp02");//文件不存在会自动创建
//1.以追加的方式创建
fos = new FileOutputStream("temp02",true);
//2.创建内容
String msg = "helloworld!";
//3.将String转换成byte数组
byte[] bytes = msg.getBytes();
//4.将byte数组中全部数据写入文件
//fos.write(bytes);
//5.将byte数组的一部分数据写入
fos.write(bytes,0,3);//从下标为0的那个数据开始,一共写三个数据
//6.推荐最后的时候为了保证数据完全写入硬盘,所以要刷新
fos.flush();//强制写入
}catch(Exception e) {
e.printStackTrace();
}finally {
//关闭文件
if(fos != null) {
try {
fos.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
}
二.使用字节输入流和字节输出流进行文件复制粘贴
1.注意:
"一边读一边写"这个程序块是怎么写的
2.使用示例
package 对象;
import java.io.*;
public class 测试程序 {
public static void main(String[] args) throws Exception {
//1.创建输入流,将硬盘中的数据读取到内存中
FileInputStream fis = new FileInputStream("temp02");
//2.创建输出流,写入到硬盘中
FileOutputStream fos = new FileOutputStream("temp03");
//3.创建“容器”,byte数组暂时存储读出来的数据
byte[] bytes = new byte[1024];//一次读取1024个字节
//4.一边读,一边写
int temp = 0;
while((temp = fis.read(bytes)) != -1) {
//将byte数组中内存直接写入
fos.write(bytes,0,temp);
}
}
}
三.字符输入流
1.好处:
一下可以读一个汉字,和上面的不一样,上面的一次读一半汉字
2.注意:
①字符输入流只能读取纯文本
②一个char类型的数据是两个字节。
3.使用示例(类比字节输入流)
package 对象;
import java.io.*;
/*
* java.io.Reader;
* java.io.InputStreamReader;//转换流(字节输入流 -- > 字符输入流)
* java.io.FileReader;//文件字符输入流(只能读取纯文本)
*/
public class 测试程序 {
public static void main(String[] args) throws Exception {
//1.创建文件字符输入流
FileReader fr = null;
try {
//1.创建文件字符输入流
fr = new FileReader("temp02");
//2.创建字符,暂时存储读出来的数据
char[] chars = new char[512];//一次读取1024个字节
//3.开始读
int temp = 0;
while((temp = fr.read(chars)) != -1) {
//将char数组有效部分转换成字符串
System.out.println(new String(chars,0,temp));
}
}catch(Exception e) {
e.printStackTrace();
}finally {
if(fr != null) {
try {
fr.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}
}
}
四.字符输出流
1.注意:
字符输出流只能写纯文本
2.使用示例(类比字节输出流)
import java.io.*;
/*
* java.io.Writer;
* java.io.OutputStreamWriter;//转换流(字节输出流 -- > 字符输出流)
* java.io.FileWriter;//文件字符输出流(只能写纯文本)
*/
public class 测试程序 {
public static void main(String[] args) throws Exception {
//1.创建文件字符输出流
//FileWriter fw = new FileWriter("temp04");//覆盖,不推荐
FileWriter fw = new FileWriter("temp04",true);//追加,推荐
//2.开始写
fw.write("我是中国人");
//3.将char数组一部分写入
char[] chars = {'我','很','强','的'};
fw.write(chars,0,3);
//4.刷新
fw.flush();
//5.关闭
fw.close();
}
}
五.使用字符输入流和字符输出流进行文件复制粘贴*
1.注意
只能复制纯文本文件
2.使用示例(类比上面的)
package 对象;
import java.io.*;
/*
* 只能复制纯文本文件
*/
public class 测试程序 {
public static void main(String[] args) throws Exception {
//1.创建流
FileReader fr = new FileReader("temp04");
FileWriter fw = new FileWriter("temp05");
//2.创建数组,暂时存储读出来的数据
char[] chars = new char[512];
//3.边读边写
int temp = 0;
while((temp = fr.read(chars)) != -1) {
fw.write(chars,0,temp);
}
//4.刷新
fw.flush();
//5.关闭文件
fr.close();
fw.close();
}
}