当前位置: 首页 > news >正文

网站a记录的是做cname视频推广

网站a记录的是做cname,视频推广,免费建网站服务最好的公司,网站app建设目录 文件字节输入流:每次读取多个字节 实例演示 注意事项 文件字节输入流:一次读取完全部字节 方式一 方式二 注意事项 文件字节输入流:每次读取多个字节 用到之前介绍过的常用方法: 实例演示 需求:用每次读取…

目录

文件字节输入流:每次读取多个字节

实例演示

注意事项

文件字节输入流:一次读取完全部字节

方式一

方式二

注意事项


文件字节输入流:每次读取多个字节

用到之前介绍过的常用方法:

实例演示

需求:用每次读取多个字节的方法读出File文件的内容

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;public class FileInputStreamTest2 {public static void main(String[] args) throws Exception {//1.创建一个字节输入流对象代表字节输入流管道与源文件接通。InputStream is = new FileInputStream("HelloWorld\\src\\file.txt");//2.开始读取文件中的字节数据:每次读取多个字节。//public int read(byte b[]) throws IoException//每次读取多个字节到字节数组中去,返回读取的字节数量,读取完毕会返回-1byte[] buffer = new byte[3];int len = is.read(buffer);String rs = new String(buffer);System.out.println(rs);System.out.println("当前读取的字节数量:" + len);//目标文件有5个字节,需要再读取一次//注意:读取多少,倒出多少int len2 = is.read(buffer);String rs2 = new String(buffer,0,len2);System.out.println(rs2);System.out.println("当前读取的字节数量:" + len2);int len3 = is.read(buffer);System.out.println(len3);   //-1is.close(); //关闭流}
}

运行结果:

使用循环改造一下

package user.IOTestOne;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;public class FileInputStreamTest2 {public static void main(String[] args) throws Exception {//1.创建一个字节输入流对象代表字节输入流管道与源文件接通。InputStream is = new FileInputStream("HelloWorld\\src\\file.txt");//使用循环byte[] buffer = new byte[3];int len;    //记住每次读取了多少个字节while((len = is.read(buffer)) != -1){//注意:读取多少,倒出多少String rs = new String(buffer,0,len);System.out.println(rs);}//性能得到了明显的提升//但是这种方案也不能避免读取汉字输出乱码的问题is.close(); //关闭流}
}

运行结果:

注意事项

  • 使用FilelnputStream每次读取多个字节,读取性能得到了提升,但读取汉字输出还是会乱码。

使用字节流读取中文,如何保证输出不乱码,怎么解决?

  • 定义一个与文件一样大的字节数组,一次性读取完文件的全部字节。

文件字节输入流:一次读取完全部字节

方式一

自己定义一个字节数组与被读取的文件大小一样大,然后使用该字节数组,一次读完文件的全部字节。

方法名称说明
public int read(byte[] buffer)每次用一个字节数组去读取,返回字节数组读取了多少个字节,如果发现没有数据可读会返回-1.

注意:文件存于硬盘中,硬盘的大小是极大的,文件的大小也可能会很大;但是我们定义的数组实际上存储于内存中,内存是很小的,无法给数组定义很大的长度;因此,这个方法只适合读取不那么大的文件。

选取案例还是那个File文件

package user.IOTestOne;import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;public class FileInputStreamTest3 {public static void main(String[] args) throws Exception{//1.创建一个字节输入流管道与源文件接通InputStream is = new FileInputStream("HelloWorld/src/file.txt");//2.准备一个字节数组,大小与文件的大小正好一样大。File f = new File("HelloWorld/src/file.txt");long size = f.length();byte[] buffer = new byte[(int) size];int len = is.read(buffer);System.out.println(new String(buffer));System.out.println("文件大小:" + size + "字节");System.out.println(len);is.close();}
}

运行结果:

方式二

  • Java官方为lnputStream提供了如下方法,可以直接把文件的全部字节读取到一个字节数组中返回。
方法名称说明
public byte[] readAllBytes()throws IOException直接将当前字节输入流对应的文件对象的字节数据装到一个字节数组返回
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;public class FileInputStreamTest3 {public static void main(String[] args) throws Exception{//1.创建一个字节输入流管道与源文件接通InputStream is = new FileInputStream("HelloWorld/src/file.txt");byte[] buffer = is.readAllBytes();  //JDK8 之后新增的方法System.out.println(new String(buffer));is.close();}
}

运行结果:

注意事项

直接把文件数据全部读取到一个字节数组可以避免乱码,是否存在问题?

  • 如果文件过大,创建的字节数组也会过大,可能引起内存溢出。

其实,读写文本内容本适合用字符流

字节流适合做数据的转移,如:文件复制等。

下篇就开始介绍字符流。


END


学习自:黑马程序员——Java课程

http://www.tj-hxxt.cn/news/71545.html

相关文章:

  • 什么网站可以做试题怎么把自己的产品推广出去
  • app大全软件网站自动外链网址
  • 科普网站建设电子商务网站开发
  • 平台b2c网站建设百度推广代理商与总公司的区别
  • 汶上外贸网站建设太原网站快速排名提升
  • 网站建设中问题分析与解决郑州靠谱seo整站优化
  • 房地产公司网站下载线上营销推广方案有哪些
  • 网上服装定制网站百度网址收录入口
  • 北京做网站哪家公司最好官方正版清理优化工具
  • 最便宜的网站建设seo优化查询
  • 怎么配置网站服务器青岛网站建设制作公司
  • 个人网站创建现在做百度推广有用吗
  • wps演示做的和网站导航seo每日工作内容
  • 网站备案取消重新备案外贸营销网站制作公司
  • 企业网站设计沈阳站外推广方式有哪些
  • 银川做淘宝网站的微信营销软件
  • wordpress主题怎么编辑电脑优化大师
  • 外国做爰网站口碑营销案例
  • 怎么做自己网站的后台西安搜建站科技网站
  • 走着瞧网站 设计神马seo教程
  • 生日礼物自己做网站韩国比分预测
  • 上海网站免费制作竞价推广网络推广运营
  • 大设计师论坛网页设计国外seo大神
  • 购物网站功能设计如何推广产品
  • 石家庄百度首页北京网站优化策略
  • 做视频网站需要整站seo免费咨询
  • 成都大型网站建设公司湖南网站设计外包哪家好
  • php做网站速成产品推广计划方案模板
  • 如何用php数据库做网站百度旗下推广平台有哪些
  • php动态网站开发技术的研究重庆排名优化整站优化