Java 的 I/O 流提供了一条通道,这条通道可以把数据送给目的地。输入流的指向称作源,程序从指向源的输入流中读取源中的数据。输出流的指向是数据要去的目的地,程序通过向输出流中写入数据把信息传递到目的地。

Java.io 包提供了大量的流类,抽象类有四种:InputStream、OutputStream、Reader 和 Writer。称 InputStream 类及其子类对象为字节输入流类,称 OutputStream 类及其子类对象为字节输出流类,称 Reader 类及其子类对象为字符输入流类,称 Writer 类及及其子类对象为字符输出流类。

InputStream 类的常用方法:

int read():输入流调用该方法从源中读取单个字节的数据,该方法返回字节值(0~255 之间的一个整数)。如果未读出字节就返回 -1。

int read(byte b[]):输入流调用该方法从源中试图读取 b.length 个字节到字节数组 b 中,返回实际读取的字节数目。如果到达文件的末尾,则返回 -1。

int read(byte b[],int off,int len):输入流调用该方法从源中试图读取 len 个字节。如果到达文件的末尾,则返回 -1。

void close():输入流调用该方法关闭输入流。

long skip(long numBytes):输入流调用该方法跳过 numBytes 个字节,并返回实际跳过的字节。

OutputStream 类的常用方法:

voidwrite(int n):输出流调用该方法向输出流写入单个字节。

void write(byte b[]):输出流调用该方法向输出流写入一个字节数组。

void write(byte b[],int off,int len):从给定字节数组中起始于偏移量 off 处取 len 个字节写入到输出流。

void close():关闭输出流。

FileInputStream 类和 FileOutputStream 类

FileInputStream 类是从 InputStream 类中派生出来的简单的输入流类。该类的所有方法都是从 InputStream 类继承的。为了创建 FileInputStream 类的对象,用户可以调用它的构造方法,如下:

FileInputStream(String name)

FileInputStream(File file)

第一个构造方法使用给定的文件名 name 创建一个 FileInputStream 对象。第二个构造方法使用 File 对象创建 FileInputStream 对象。参数 name 和 file 指定的文件称作输入流源,输入流通过调用 read 方法读出源中的数据。

FileInputStream 文件输入流,打开一个到达文件的输入流(源就是这个文件,输入流指向这个文件)。例如,为了读取一个名为 myfile.dat 的文件,建立一个文件输入流对象,如下所示:

try

{

FilelnputStream istream=new FilelnputStream("myfile.dat");

}

catch(IOException e)

{

System.out.println("File read error:"+e);

}

文件输入流构造方法的另一种格式是允许使用文件对象来指定要打开哪个文件,下面使用文件输入流构造方法建立一个文件输入流:

try

{

File f=new File("myfile.dat");

FileInputStream istream=new FileInputStream(f);

}

catch(IOException e)

{

System.out.println("File read error:"+e);

}

提示:

当使用文件输入流构造方法建立通往文件的输入流时,可能会出现异常。例如要打开的文件可能不存在。当出现 I/O 错误时,Java 会生成一个出错信号,它使用一个 IOException 对象来表示这个出错信号。

与 FilelnputStream 类相对应的类是 FileOutputStream 类。FileOutputStream 类提供基本的文件写入功能。除了从 OutputStream 类继承来的方法以外,FileOutputStream 类还有两个常用的构造方法,如下:

FileOutputStream(String name)

FileOutputStream(File file)

第一个构造方法使用给定的文件名 name 创建 FileOutputStream 对象。第二个构造方法使用 File 对象创建 FileOutputStream 对象。参数 name 和 file 指定的文件称作输出流的目的地,通过向输出流中写入数据把信息传递到目的地。创建输出流对象也能发生 IOException 异常,必须在 try、catch 块语句中创建输出流对象。

使用 FilelnputStream 的构造方法 FileInputStream(String name) 创建输入流时,以及使用 FileOutputStream 的构造方法 FileOutputStream(String name) 创建输出流时,如果参数仅仅是文件的名字(不带路径),就要保证参数表示的文件和当前应用程序在同一目录下,由于 JSP 引擎是在 bin 下启动执行的,所以文件必须在 bin 目录中。

BufferedInputStream 类和 BufferedOutputStream 类

FileInputStream 流经常和 BufferedInputStream 流配合使用,FileOutputStream 流经常和 BufferedOutputStream 流配合使用。BufferedInputStream 类的一个常用的构造方法是 BufferedInputStream(InputStream in),该构造方法创建缓存输入流。

当要读取一个文件,例如 A.txt 时,可以先建立一个指向该文件的文件输入流:

FileInputStream in=new FileInputStream("A.txt");

然后再创建一个指向文件输入流 in 的输入缓存流:

BufferedInputStream bufferRead=new BufferedInputStream(in);

这时,就可以让 bufferRead 调用 read 方法读取文件的内容。bufferRead 在读取文件过程中会进行缓存处理,提高读取的效率。

同样,当要向一个文件,例如 B.txt 写入时,可以先建立一个指向该文件的文件输出流:

FileOutputStream out=new FileOutputStream("B.txt");

然后再创建一个指向输出流 out 的输出缓存流:

BufferedOutputStream bufferWriter=new BufferedOutputStream(out);

这时,bufferWriter 调用 write 方法向文件写入内容时会进行缓存处理,提高写入的效率。注意写入完毕后须调用 flush 方法将缓存中的数据存入文件。

【例1】将若干内容写入一个文件,然后读取这个文件,并将文件的内容显示给用户:

File dir=new File("D:/","Students");

dir.mkdir();

File f=new File(dir,"hello.txt");

try

{

FileOutputStream outfile=new FileOutputStream("hello.txt");

BufferedOutputStream bufferout=new BufferedOutputStream(outfile);

byte b[]="您好,我的名字叫陈洁!
Hello,my name is Chen Jie".getBytes();

bufferout.write(b);

bufferout.flush();

bufferout.close();

outfile.close();

FileInputStream in=new FileInputStream("hello.txt");

BufferedInputStream bufferin=new BufferedInputStream(in);

byte c[]=new byte[90];

int n=0;

while((n=bufferin.read(c))!=-1)

{

String temp=new String(c,0,n);

out.print(temp);

}

bufferin.close();

in.close();

}

catch(IOException e){}

%>

程序运行结果如图 1 所示。

图1 使用字节流读/写文件

android 字节流读取,使用字节流读/写文件相关推荐

  1. android otg读写文件,Android USB Host在USB设备OTG中读/写文件

    我正在编写Android设备是主机的应用程序.用户将USB驱动器连接到Android设备,我的应用程序将在USB驱动器中写入一些文本文件.文本文件的路径就像USB_DRIVE/Data/APP_NAM ...

  2. Numpy简易教程7——读/写文件

    读/写文件 NumPy的文件读/写主要有二进制的文件读/写和文件列表形式的数据读/写两种形式.学会读/写文件是利用NumPy进行数据处理的基础.NumPy提供了若干函数,可以把结果保存到二进制或文本文 ...

  3. 文本文件写java_Java 读/写文件文本文件的示例

    /* * 简单的读/写文本文件的示例 * 这里包含了三个例子,即 * 1. 将文件读入到内存(这里是StringBuffer)的例子 * 2. 将内容中的文本写到文件 * 3. 将一个文件的内容读出来 ...

  4. python 读/写文件操作

    python中也提供类似于C语言中的open.read.write函数,下面是我根据看过的内容的一个python读.写文件的代码段: //读文件 //在python的执行文件夹中新建一个"1 ...

  5. mysql读/写文件操作

    参考: https://blog.csdn.net/slip_666/article/details/79050454 1.通过load_file()函数将文件内容爆出来 前提条件 当前权限对该文件可 ...

  6. Java中 读-写 文件 BufferedReader BufferedWriter

    本篇文章,为大家带来Java中进行文件读写的一种方式. 我的文件目录: /Users/gisboy/Desktop/a.txt Java中,用java.io.BufferedReader 进行文件内容 ...

  7. PYTHON文件操作(读/写文件)

    模板先行,介绍在后面 with open("ce.txt",encoding='utf-8') as file:# text = file.read()while True:#获取 ...

  8. Android 如果读取asserts 中的db文件,并进行查询操作

        前言:前篇已经讲了,如何将excel表格转化成db文件使用.不清楚的朋友可以看下我上篇的文章.然而在这里,主要说下怎么操作assserts目录下的db文件,进行对数据库的查询操作.废话不多说, ...

  9. 黑马毕向东Java课程笔记(day19-11——19-22)IO字节流:字节流及其读取、字节流缓冲区、自定义字节流(读取)的缓冲区、读取键盘的输入、读取/写入转换流、流操作规律

    1.字节流--File   字节流的介绍 字符流:(一个字符2个字节16位) FileReader FileWriter. BufferedReader BufferedWriter字节流:(一个字节 ...

最新文章

  1. c与python的区别-Python与C语言有什么区别?
  2. Effective Java~43. 方法引用优于Lambda
  3. 现代软件工程讲义 2 开发技术 - 单元测试 amp; 回归测试
  4. php mysql sqlite缓存_使用sqlite作为数据缓存
  5. java中的foreach用法及总结
  6. vue调试工具 -- vue-devtools 安装方法
  7. FineBI与FineReport对比
  8. Java基础-API手册
  9. 计算机组成原理试题 一,计算机组成原理试题库(含答案)
  10. 软件测试与质量保证习题
  11. 解决三星PM981硬盘无法正常安装黑苹果的问题(第四版)
  12. 浏览器存储cookie
  13. 域名解析中TTL是什么意思
  14. 使用Visual Leak Detector工具检测内存泄漏
  15. 伯禹公益AI《动手学深度学习PyTorch版》Task 06 学习笔记
  16. Cisco、华为、H3C交换机配置文件自动备份
  17. 网盘资源搜索器有哪些?
  18. windows下安装mongodb时报错verify that you have sufficient privileges to start system services解决方法
  19. 手机APP自动化 Appium教程
  20. 47: 监控概述 、 Zabbix基础 、 Zabbix监控服 、 总结和答疑

热门文章

  1. 柱状图,折线图,饼状图制作
  2. 创维电视显示连接服务器失败怎么回事,网络出错(50101,1401001)是什么意思-创维电视网络异常101...
  3. java游戏打败boss有元素精灵_原神黄金屋boss用什么元素打
  4. 美股评论:苹果不会告诉你的十件事
  5. Flask项目脚手架 -- Flask-Application正式发布
  6. 关于2020年度国家自然科学基金申请项目评审结果的通告 (含查询时间和方法))
  7. StrUtil.removeAll,java: 无法将类 cn.hutool.core.text.CharSequenceUtil中的方法 removeAll应用到给定类型;
  8. 5月6阴阳师服务器维护,阴阳师体验服5月6日维护更新公告 新剧情开启
  9. 7-58 jmu-python-计算利率
  10. 公交WiFi:变现能力将迎来大考