java 20 - 7 字节输入流的操作
字节输入流操作步骤:
A:创建字节输入流对象
B:调用read()方法读取数据,并把数据显示在控制台
C:释放资源
步骤A、C 略过,说步骤B
读取数据的方式:
A:int read():一次读取一个字节
B:int read(byte[] b):一次读取一个字节数组
要想进行字节输入流的操作,我得先创建一个文件,并用字节输出流输出内容到这个文件里面:
//首先我创建一个txt文件,并输出内容
File file = new File("a.txt"); //用字节输出流输出数据
FileOutputStream out = new FileOutputStream(file);
out.write("java IO".getBytes());
out.close();
读取数据的方式A:int read():一次读取一个字节
int by = fis.read();
System.out.println(by);//这里输出的会是j的ASCII码‘106’
System.out.println((char) by);//所以要进行类型转换,输出‘j’,因为每次读取一个字节,都会进行转换类型,所以如果是汉字,那么转换结果我们看不懂
因为这个方式只是读取一个字节,所以如果接着写下去,它会输出下一个字节,相当于添加了个next在前面。
直到你读取到内容最后,没有内容可读取了,就会返回“-1”。所以,我们可以使用循环来一次性把里面的内容输出:
int by = 0;
while((by = in.read()) != -1){//当返回的是-1时,代表后面没有内容了,就跳出这个循环。
System.out.print((char)by);
读取数据的方式B:int read(byte[] b):一次读取一个字节数组
数组的长度一般是1024或者1024的整数倍
这个方法的返回值其实是实际读取的字节个数。同样,这个方法若是返回值为“-1”,则代表后面没有数据
byte[] bys = new byte[1024];//1024的整数倍
int len = 0;//存储读取的实际长度
while ((len = in.read(bys)) != -1) {
System.out.print(new String(bys, 0, len));//打印这个数组的所有内容
}
注意:以上方法为了方便,都是把异常抛出。记得,一定要释放资源
xxx.close();
java 20 - 7 字节输入流的操作的更多相关文章
- java 20 - 5 字节输出流写出数据的一些方法
首先回顾下 字节输出流操作步骤: A:创建字节输出流对象 B:调用write()方法 C:释放资源 创建字节流输出对象 FileOutputStream fos = new FileOutput ...
- 字节输入流_InputStream类&FileInputStream类介绍和字节输入流读取字节数据
java.io.InputStream:字节输入流 此抽象类是表示字节输入流的所有类的超类 定义了所有子类共性的方法: int read()从输入流中读取数据的下一个字节 int read(byte[ ...
- 字节输出流的续写和换行和字节输入流InputStream类&FileInputStream类介绍
数据追加续写 每次程序运行,创建输出流对象,都会清空目标文件中的数据.如何保目标文件中的数据,还能继续添加新数据呢? public FileOutputStream(File file,boolean ...
- java 20 - 9 带有缓冲区的字节输出流和字节输入流
由之前字节输入的两个方式,我们可以发现,通过定义数组读取数组的方式比一个个字节读取的方式快得多. 所以,java就专门提供了带有缓冲区的字节类: 缓冲区类(高效类) 写数据:BufferedOutpu ...
- Java 之 字节输入流 [InputStream]
一.字节输入流 java.io.InputStream 抽象类是表示字节输入流的所有类的超类,可以读取字节信息到内存中. 它定义了字节输入流的基本共性功能方法. 共性方法: public void c ...
- java IO流 之 字节输入流 InputString()
学习java的重点之一:InputStream 字节输入流的使用 (1)FileInputstream: 子类,读取数据的通道 使用步骤: 1.获取目标文件:new File() 2.建立通道:ne ...
- 乐字节Java反射之四:反射相关操作
大家好,乐字节小乐继续为Java初学者讲述Java基础知识.上次说到乐字节Java反射之三:方法.数组.类加载器,这次是Java反射之四:反射相关操作 1.操作属性 //1.获取Class对象 Cla ...
- Java(20~24)
1.Collection中的集合称为单列集合,Map中的集合称为双列集合(键值对集合). 2.Map常用方法:map.put() map.get() map.remove() map.ke ...
- Java中的字节,字符与编码,解码
ASCII编码 ASCII码主要是为了表示英文字符而设计的,ASCII码一共规定了128个字符的编码(0x00-0x7F),只占用了一个字节的后面7位,最前面的1位统一规定为0. ISO-8859-1 ...
随机推荐
- 改变mvc web api 支持android ,ios ,ajax等方式跨域调用
公司一个移动后端的项目用到了 webapi 项目搭建到外网环境共app开发者调用测试接口时遇到了一个问题 接口不允许跨域调用 .查阅资料明白 同源策略原则根据请求报头值 Origin 与回应报头值 A ...
- 在ALV中更新数据库表
FORM usercommand USING ucomm TYPE sy-ucomm selfield TYPE slis_selfield. DATA: lr_grid TYPE REF TO cl ...
- 使用RDCMan管理SharePoint虚拟机的重复要求验证的问题
首先,这个软件可以从这里下载: Remote Desktop Connection Manager 同类型的软件还有很多,我没有很多复杂功能的要求,就选择了这款微软官方的,虽然很久都没有更新过了. 为 ...
- Sharepoint学习笔记—习题系列--70-573习题解析 -(Q22-Q24)
Question22You create a Feature.You need to remove the link to the Site Content Type page from the Si ...
- 【原/转】ios指令集以及基于指令集的app包压缩策略
iPhone指令集 本文所讲的内容都是围绕iPhone的CPU指令集(想了解ARM指令集的同学请点击这里),现在先说说不同型号的iPhone都使用的是什么指令集: ARMv8/ARM64 = iP ...
- OC正则表达式的使用
OC中一般正则表达式的使用方法为2步 1.创建一个正则表达式对象 2.利用正则表达式来测试对应的字符串 例如 NSString *checkString = @"a34sd231" ...
- 斯坦福iOS7公开课4-6笔记及演示Demo
1.变量类型别滥用id,如果不仔细容易在程序执行时引发错误,因为在编译阶段编译器只是检测变量对象所属类型,尤其是类型为id时代表任何类型都可以通过检查,但不会检测变量对象调用的方法,这样当对象所属类不 ...
- iOS之微博UI实例--拟物化设计(成功了90%)
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- 多线程技术 NSThread & NSOperation & GCD
多线程:在iOS开发中,用到多线程的处理问题的时候有很多,比如异步下载数据时刷新界面等等. 引入多线程来处理问题的关键就是,基于多线程可以使界面更加流畅,防止界面假死. 界面假死:比如你单击一个按钮来 ...
- 问题解决——使用GP-3120TN打印条形码标签
终于大致的尝试出了参数和编程手册里指令的使用. 在这里,感谢佳博中一个叫做"Gprinter 陶玮"的工程师所提供的技术支持.非常感谢,如果没有你,在写这篇文章之前我可能换别的打印 ...