IO流对文件的拷贝(字节流与字符流)


        IO流是用来处理设备之间的数据传输,Java对数据的操作都在IO包中,流按照流向可以分为输入流和输出流,按照流的操作类型可以分为:字节流和字符流,字节流可以操作任何数据,因为数据在计算机中都是以字节形式存储的。而字符流只是操作纯字符数据,像纯中文的数据就可以用字符流来传输,比较方便。
        字节流的抽象父类:InputStream和OutputStream
        字符流的抽象父类:Reader和Writer
IO流对于文件的操作我们用FileInputStream 和FileOutputStream来创建对象,FileInputStream是输入流,FileOutputStream是输出流,通过这两个类,我们可以做一个拷贝文件的程序来加深对流的操作的理解。
        代码截图演示:(1)字节数据流拷贝
public class Copy {


public static void main(String[] args) throws IOException{
Copy c = new Copy();
c.copy();
//c.copy1();
}
public void copy() throws IOException{
FileInputStream fis = new FileInputStream("C:\\Users\\huangxiong\\Desktop\\个人博客.txt");//关联一个文件,并给出文件绝对地址
FileOutputStream fos = new FileOutputStream("C:\\Users\\huangxiong\\Desktop\\个人博客copy.txt");//给出你要拷贝文件存放的地址和名字
byte [] arr = new byte[1024];//定义一个小数组,来提高每次输入和输出的字节个数,提高效率,因为是字节流,所以我们用byte类型。
int len;
while((len=fis.read(arr))!=-1){ //如果读到文件的末尾,read()返回的值为-1,用这个作为文件拷贝完成与否的判断,
fos.write(arr,0,len); //将读到的数据通过输出流写到新建的文本上,完成文件的拷贝
}
fis.close();                  //拷贝完成关闭流,
fos.close();
}
(2)字符数据拷贝
public class Copy {


public static void main(String[] args) throws IOException{
Copy c = new Copy();
//c.copy();
c.copy1();
}
public void copy1() throws IOException {


FileReader fr = new FileReader("C:\\Users\\huangxiong\\Desktop\\字符流测试文档.txt");
FileWriter fw = new FileWriter("C:\\Users\\huangxiong\\Desktop\\字符流测试文档copy.txt");
char[] arr = new char[1024];
int len;
while((len=fr.read(arr))!=-1){
fw.write(arr,0,len);
}
fr.close();
fw.close();
}
}
流的使用的注意事项:
        FileWriter fw = new FileWriter("C:\\Users\\huangxiong\\Desktop\\字符流测试文档copy.txt");在创建输出流对象的时候,系统会查找该路径下有没有改文件,如果有,就直接室友该文件,不过该文件会被清空,如果没有,系统会给我们创建一个新文件。那么如果我们要将拷贝的内容续写在文件的结尾时,我们可以加一个参数,像这样:FileWriter fw = new FileWriter("C:\\Users\\huangxiong\\Desktop\\字符流测试文档copy.txt",true);给一个true参数,这样就会在文件末尾进行续写,而不是清空文件。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值