程序的开发当中一直在用文件的读写,但是对于java当中输入流以及输出流只是会用不理解,一直以来想搞清楚其,但是一直没有执行(悲剧),今天早上抽出半个小时通过JDK
API1.6.0中文版帮助逐步的了解下字节输入流读取字节的方法;
下面就说说InputStream当中read()、read(byte[] b)、read(byte[]
b、int off 、int
len)的使用以及区别
一、read()方法:
public static void inputStreamRead1() {
try{
//构造一个输入流对象(读数据)test.txt文本的内容为:我爱你中国
InputStream is = new FileInputStream(“E:\\test.txt”);
//构造一个输出流对象(写数据)
OutputStream os = new FileOutputStream(“E:\\ctest.txt”);
int len;//表示读入的数据(十进制的形式表示)
//FileInputStream可以使用read()方法一次读取一个字节,读入的数据以int类型返回,所以,你要是使用System.out.println()将数据显示出来的时候是以10进制的方式显示
while((len = is.read())!=-1){
System.out.println(“len=”+len);
os.write(len);
}
os.close();
is.close();
}catch(Exception e){
e.printStackTrace();
}
}
运行以上程序,则控制台的输出为:
如图
说明:我爱你中国为5个汉字,5个汉字则为10个字节,而read()方法为一个字节一个字节的读,所以读取10次,而后len的值则为汉字的10进制表示
2、read(byte[] b)方法:
public static void inputStreamRead2(){
try{
//构造输入流对象(读数据)test.txt文本的内容为多个我爱你中国
InputStream is = new FileInputStream(“E:\\test.txt”);
//构造输出流对象(写数据)
OutputStream os = new FileOutputStream(“E:\\ctest.txt”);
//创建一个长度为1024的byte数组
byte[] b = new byte[1024];
//int len;表示成功读取的字节数的个数
//FileInputStream可以使用read(byte[] b )每次读取多个(b.length)字节数据(每次最多读取多少个)到byte数组当中
while((len = is.read(b))!=-1){
System.out.println(“len=”+len);
os.write(b);
}
os.close();
is.close();
}catch(Exception e){
e.printStackTrace();
}
}
运行上面的程序则控制台的输出为:
如图
说明:每次最多读取1024个字节,很明显使用这种方式的效率要高于read()读取的效率,开发的过程当中也见识使用此方式进行读取;
3、read(byte[] b,int off,intlen):
1、public static void inputStreamRead3(){
try{
//构建输入流对象(读文件)
InputStream is = new FileInputStream(“E:\\test.txt”);
//构建输出流对象(写文件)
OutputStream os = new FileOutputStream(“E:\\ctest.txt”);
//声明一个大小为输入流大小的数组
byte[] b = new byte[is.available()];
int len = 0;//表示成功读取的字节数的个数
while(len<is.available()){
//read(byte[] b,int off, int len)表示从输入流当中最多将len个字节的数据读取到一个byte数组当中
len+=is.read(b, len, is.available() - len);
os.write(b);
}
os.close();
is.close();
}catch{
e.printStackTrace();
}
}
运行上面的程序控制台的输出为:
如图
说明:则一次性读取完成
2、public static void inputStreamRead3(){
try{
//构建输入流对象(读文件)
InputStream is = new FileInputStream(“E:\\test.txt”);
//构建输出流对象(写文件)
OutputStream os = new FileOutputStream(“E:\\ctest.txt”);
//声明一个大小为输入流大小的数组
byte[] b = new byte[1024];
int len = 0;//表示成功读取的字节数的个数
while((len=is.read(b,len,1024))!=-1){
System.out.println(“len=”+len);
os.write(b);
}
os.close();
is.close();
}catch{
e.printStackTrace();
}
}
说明:运行上面的程序控制台的输出为:
如图
则一次最多读取1024个字节
|
相关文章
- 09-13NIO【同步非阻塞io模型】关于 NIO socket 的详细总结【Java客户端+Java服务端 + 业务层】【可以客户端间发消息】
- 09-13关于java.io.IOException: HADOOP_HOME or hadoop.home.dir are not set.的问题
- 09-13关于Java泛型"擦除"的一点思考
- 09-13Java 关于类的构造方法的一点认识
- 09-13关于Java程序流程控制的整理(未完善)
- 09-13java中关于string类和常量池的一点猜想
- 09-13JAVA基础知识之网络编程——-关于阻塞IO/非阻塞IO/同步IO/异步IO的一些参考文章
- 09-13整理关于Java进行word文档的数据动态数据填充
- 09-13关于System.getProperty("java.io.tmpdir");的输出,及System.getProperty();参数
- 09-13关于JAVA中顺序IO的基本操作