java学习之六(IO流上篇)
来源:互联网 发布:苹果id解锁软件 编辑:程序博客网 时间:2024/06/02 20:34
java.io.File类用于表示文件(目录)
file类只用于表示文件(目录)的信息(名称、大小等),不能用于文件的访问。
RandomAccessFile 提供文件内容的访问,既可以读文件,也可以写文件
RandomAccessFile 支持随机访问文件,可以访问文件的任意位置。
1)java文件模型
在硬盘上的文件时byte byte byte存储的,是数据的集合
2)打开方式:(rw:读写;r:只读)
RandomAccessFile raf=new RandomAccessFile(file,"rw");
内部还有一个文件指针,刚打开文件时指针在开头
3)写的方法
raf.write(),只写一个字节,同时指针指向下一个位置,准备再次写入
4)读的方法
raf.read(),读一个字节
5)文件读写完成以后一定要关闭
raf.close();
IO流(输入流、输出流)
1.字节流
1)(InputStream、OutputStream)
InputStream抽象了应用程序读取数据的方式
OutPutStream抽象了应用程序写出数据的方式
2)EOF=End 读到-1就读到结尾 eof(读到文件结尾)
3)输入流基本方法
int b=in.read();读取一个字节无符号填充到int低八位.-1是EOF
in.read(byte[] buf); 读取数据填充到byte数组中
in.read(byte[] buf,int start,int size)start:从哪里开始,size读多少
4)输出流基本方法
out.write(int b) 写出一个byte到流,b的低8位
out.write(byte[] buf);
out.write(byte[] buf,int start ,int size)start:从哪里开始,size写多少
5)FileInputStream 具体实现了在文件上读取数据
单字节读取:不适合读取大文件
public static void main(String[] args) throws IOException {
File file =new File("E:\\测试.txt");
FileInputStream fis=new FileInputStream(file);
int b=0;
int i=1;
while ((b=fis.read())!=-1){
if(b<=0xf){
System.out.print("0");
}
System.out.print(Integer.toHexString(b)+" ");
if(i++%10==0){
System.out.println();
}
}
fis.close();
}
批量读取:
public static void main(String[] args) throws IOException {
File file = new File("E:\\测试.txt");
FileInputStream fis = new FileInputStream(file);
byte[] by = new byte[10 * 1024];
int j = 0;
int bytes = 0;
while ((bytes = fis.read(by, 0, by.length)) != -1) {
for (int i = 0; i < bytes; i++) {
//&0xff byte 是8位的 int 是32位,通过这个可以去除高位的0
System.out.print(Integer.toHexString(by[i] & 0xff) + " ");
if (j++ % 10 == 0) {
System.out.println();
}
}
}
fis.close();
file类只用于表示文件(目录)的信息(名称、大小等),不能用于文件的访问。
RandomAccessFile 提供文件内容的访问,既可以读文件,也可以写文件
RandomAccessFile 支持随机访问文件,可以访问文件的任意位置。
1)java文件模型
在硬盘上的文件时byte byte byte存储的,是数据的集合
2)打开方式:(rw:读写;r:只读)
RandomAccessFile raf=new RandomAccessFile(file,"rw");
内部还有一个文件指针,刚打开文件时指针在开头
3)写的方法
raf.write(),只写一个字节,同时指针指向下一个位置,准备再次写入
4)读的方法
raf.read(),读一个字节
5)文件读写完成以后一定要关闭
raf.close();
IO流(输入流、输出流)
1.字节流
1)(InputStream、OutputStream)
InputStream抽象了应用程序读取数据的方式
OutPutStream抽象了应用程序写出数据的方式
2)EOF=End 读到-1就读到结尾 eof(读到文件结尾)
3)输入流基本方法
int b=in.read();读取一个字节无符号填充到int低八位.-1是EOF
in.read(byte[] buf); 读取数据填充到byte数组中
in.read(byte[] buf,int start,int size)start:从哪里开始,size读多少
4)输出流基本方法
out.write(int b) 写出一个byte到流,b的低8位
out.write(byte[] buf);
out.write(byte[] buf,int start ,int size)start:从哪里开始,size写多少
5)FileInputStream 具体实现了在文件上读取数据
单字节读取:不适合读取大文件
public static void main(String[] args) throws IOException {
File file =new File("E:\\测试.txt");
FileInputStream fis=new FileInputStream(file);
int b=0;
int i=1;
while ((b=fis.read())!=-1){
if(b<=0xf){
System.out.print("0");
}
System.out.print(Integer.toHexString(b)+" ");
if(i++%10==0){
System.out.println();
}
}
fis.close();
}
批量读取:
public static void main(String[] args) throws IOException {
File file = new File("E:\\测试.txt");
FileInputStream fis = new FileInputStream(file);
byte[] by = new byte[10 * 1024];
int j = 0;
int bytes = 0;
while ((bytes = fis.read(by, 0, by.length)) != -1) {
for (int i = 0; i < bytes; i++) {
//&0xff byte 是8位的 int 是32位,通过这个可以去除高位的0
System.out.print(Integer.toHexString(by[i] & 0xff) + " ");
if (j++ % 10 == 0) {
System.out.println();
}
}
}
fis.close();
}
6)FileOutputStream:实现了向文件中写出byte数据的方法
FileOutputStream fos=new FileOutputStream(File file)
FileOutputStream fos=new FileOutputStream(File file,boolean append)
7)DataOutputStream/DataInputStream
对"流"功能的扩展,可以更加方便的读取int,long,字符等类型数据
DataOutputStream dos=new DataOutputStream(new FileOutputStream(File file))
DataInputStream dos=new DataInputStream(new FileInputStream(File file))
8)BufferedInputStream/BufferedOutputStream
这两个流类为IO提供了带缓冲区的操作,一般打开文件进行写入或读取操作时,都会加上缓冲,这种模式提高了IO的性能。
0 0
- java学习之六(IO流上篇)
- Java IO学习笔记(六):管道流
- java学习笔记(六)IO
- Java IO学习笔记六
- Java学习笔记之IO(六):字节流对中文数据的读写
- Java学习之IO流
- Java之IO流学习
- JAVA菜鸟(六)IO流
- Java IO流学习总结六:ByteArrayInputStream、ByteArrayOutputStream
- java核心技术之IO流(六)DataInputStream和DataOutputStream
- Java之IO(六)编码和解码
- Java io 输入输出流(六)
- vue.js学习之组件(上篇)
- Java IO(六):RandomAccessFile
- Java整理(六)IO
- io的学习之六-----缓冲区
- JAVA学习第五十二课 — IO流(六)File对象
- java学习之路 之 IO流
- 2016,感动,前行
- 15.2 单片机SPI通信接口
- 15.3 实时时钟芯片DS1302介绍
- 15.4 DS1302的硬件信息
- 15.5 DS1302寄存器介绍
- java学习之六(IO流上篇)
- 欢迎使用CSDN-markdown编辑器
- 1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- PCL1.8.0,VS2013配置教程。
- 职业素养与职业声誉——北漂18年(62)
- windows程序设计学习笔记-设备无关位图
- Eclipse开发Android程序如何在手机上运行
- Android: 亲测解决模拟器启动慢的问题
- JZOJ 3446. 三角阵