IO流之字节流
来源:互联网 发布:淘宝店铺过户近亲属 编辑:程序博客网 时间:2024/04/27 12:06
IO流之基础讲解
一、什么是IO流?
二、字节和字符的区别!
三、字节流和字符流的区别?
四、IO流的分叉图!
五、字节流(FileInputStream和FileOutputStream)的使用!
五—-1:FileInputStream的使用及有缓存和没缓存的区别
import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;public class TextRWByteStream01 { /* * 我们比较一下用缓存和没有缓冲的区别 * 我们同样使用这个gi * */ //-------------------------------------无缓存--------------------------------------- public static void main(String[] args) { try { //读取我放在d://data//dongtai.gif的图片,使其转换为字节 FileInputStream fin = new FileInputStream("d://data//dongtai.gif"); //创建一个byte,长度为100.你设置的越少,访问磁盘的次数越多 byte[] bytes = new byte[100]; int num = 0; //开始读取我们获取当前时间 long begin = System.currentTimeMillis(); //判断是否读取到末尾 while (fin.read(bytes)!=-1) { num++; } System.out.println("没有缓冲请求磁盘的次数:"+num); String end = System.currentTimeMillis()-begin+"ms"; System.out.println("没有缓冲读取dongtai.gif图耗时:"+end); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } //-------------------------------------有缓存--------------------------------------- System.out.println("==================打印数据分界线====================="); try { //读取我放在d://data//dongtai.gif的图片,使其转换为字节 FileInputStream fin = new FileInputStream("d://data//dongtai.gif"); BufferedInputStream bis = new BufferedInputStream(fin); //创建一个byte,长度为100.你设置的越少,访问磁盘的次数越多 byte[] bytes = new byte[100]; int num = 0; //开始读取我们获取当前时间 long begin = System.currentTimeMillis(); //判断是否读取到末尾 while (bis.read(bytes)!=-1) { num++; } System.out.println("有缓冲请求磁盘的次数:"+num); String end = System.currentTimeMillis()-begin+"ms"; System.out.println("有缓冲读取dongtai.gif图耗时:"+end); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
运行结果:可以清晰的看出,带缓冲的明显效率更高
五—-2:使用FileInputStream和FileOutputStream实现文件的复制,此demo没有用缓存
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;public class TextRWByteStream02 { /* * 运动字节流来复制一张图片 * 1、我已经在我的D盘data文件夹下放置了一张gif图 * 2、此demo没有用缓存 * */ public static void main(String[] args) { try { //读取我放在d://data//dongtai.gif的图片,使其转换为字节 FileInputStream fin = new FileInputStream("d://data//dongtai.gif"); //把我们获得的图片字节流,写成一个图片 FileOutputStream outputStream = new FileOutputStream("d://data//newdongtai.gif"); //创建一个byte,长度为1024.自己根据实际情况调整数组 byte[] bytes = new byte[1024]; //判断是否读取到末尾 while (fin.read(bytes)!=-1) { //如果还有字节,就一直写入,到写入完 outputStream.write(bytes); } outputStream.close(); fin.close(); System.out.println("复制成功"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
运行结果:成功
五—-3:使用FileInputStream和FileOutputStream实现文件的复制,用缓存
import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;public class TextRWByteStream03 { /* * 运动字节流来复制一张图片---带缓冲 * 1、我已经在我的D盘data文件夹下放置了一张gif图 * 2、此demo有用缓存 * */ public static void main(String[] args) { try { //输入我放在d://data//dongtai.gif的图片,使其转换为字节, //添加缓存,并且还可以制定缓存区的大小。合理的添加缓存区的大小合理有效的节约读取时间。 //由于我的这张图片不到1M。所以缓存区200就差不多了 FileInputStream fin = new FileInputStream("d://data//dongtai.gif"); BufferedInputStream bfin = new BufferedInputStream(fin,200); //输入流我们也添加缓存区 FileOutputStream fout = new FileOutputStream("d://data//newdongtai.gif"); BufferedOutputStream bfout = new BufferedOutputStream(fout); //创建一个byte,长度为1024.自己根据文件实际大小情况调整数组, //文件过大可以调大,文件过小就不要设置太大 byte[] bytes = new byte[1024]; //判断是否读取到末尾 while (bfin.read(bytes)!=-1) { //如果还有字节,就一直写入,到写入完 fout.write(bytes); } bfin.close(); fin.close(); bfout.close(); fout.close(); System.out.println("复制成功"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
运行结果:成功
demo地址:http://download.csdn.net/detail/bobo8945510/9667082
0 0
- IO之字节流
- IO之字节流
- IO之字节流
- IO之字节流
- IO流之字节流
- IO流之字节流
- IO流之字节流
- IO流之字节流
- IO流之字节流
- IO流之字节流
- IO流之字节流
- Java IO之字节流
- 12.IO之字节流
- IO之字节流练习
- Java IO之字节流
- Java IO之字节流
- Java IO 之字节流
- Java IO之字节流
- HTTP中继(代理)、隧道相关介绍及简单Java实现
- IO流之字符流
- java反射之动态代理学习笔记
- SSH工作原理
- 树莓派禁止休眠设置
- IO流之字节流
- 大数据Spark “蘑菇云”行动第100课:Hive性能调优之企业级Join、MapJoin、GroupBy、Count、数据倾斜彻底解密和最佳实践
- codeforce 742 E. Arpa’s overnight party and Mehrdad’s silent entering (分食物||二分图染色+dfs)
- MySql 1130-host ... is not allowed to connect to this MySql server
- 广电发布“中国原创游戏精品出版工程”通知
- 生成试验数据的茎叶图,并显示不同区间数据的个数
- hover
- linux sed 匹配替换
- RandomAccessFile