Java知识点整理:第十二章:java文件系统管理、IO流(Input(输入)/Output(输出)) 、缓冲流
来源:互联网 发布:裁决网络 编辑:程序博客网 时间:2024/05/21 08:44
1.Java文件系统管理:
1.File类
java.io.File类用于表示文件、目录.
也就是说编程人员可以通过File类在程序中操作硬盘上的文件和目录(文件夹)
File类只用于表示文件、目录的相关信息(文件路径.文件名称.文件大小...)不能对文件的内容进行访问.
File的基本API:
File(String) 执行文件名的构造器
length() 文件的长度
lastModified() 最后的修改时间.
getName() 获取文件的名字
getPath() 路径
exists() 判断是否存在
isFile() 是不是文件
isDirectory()是不是目录
mkdir() 创建目录
mkdirs() 同时创建多个目录
delete() 删除
createNewFile()创建新文件
listFile() 罗列所有的文件.
2.RandomAccessFile
RandomAccessFile类是java提供的功能丰富的文件内容访问类.它提供了从多方法来访问文件内容,既可以读取文件内容,也可以向文件写数据.
RandomAccessFile支持"随机访问"方式.可以访问文件的任意位置.
a.java文件模型
在硬盘上文件是以"byte by byte"存储的。
是数据的集合.
b.打开文件
有两种方式: rw(读写), r(只读)
RandomAccessFile raf = new RandomAccessFile(file,"rw");
打开文件的时候默认文件的指针在开头:
pointer =0
c.读取文件
raf.read();
每次从文件中读取一个byte(8位)填充到int的低八位.高24位为0.
如果返回了-1,代表读到文件的末尾.
每次读取后自动移动文件指针.准备下次读取
d.写入方法
raf.write(int);
可以将int的低8位写入到文件中.同时指针自动移动到下一个位置,准备再次写入.
e.文件读写完成以后一定要关闭文件.
sun官方说明,如果不关闭,可能遇到一些 意想不到的错误.根据具体操作平台的不同会有不同的现象。
在使用过程中,切记文件读写完成后要:关闭文件.
例如:
11111111 00000000 00000000 11111111
java中的位移运算.
左移<<:高位舍弃,低位补0 可能会发生符号的改变.
右移:
带符号右移: >>
高位补原来的符号.原来是1就补1
原来是0就补0
不带符号右移 >>>
高位全部补0
不管是无符号右移还是带符号右移,移出去的全部舍弃.
2.IO流(Input(输入)/Output(输出)) :
1.IO流(Input(输入)/Output(输出))
RandomAccessFile
raf.read() 输入
raf.write()输出
java中的IO流是实现输入\输出的基础.
a.InputStream
输入流,抽象了应用程序读取数据的方式
OutputStream
输出流,抽象了应用程度写出数据的方式
输入流与输出流是相对于应用程序而言的,应用程序是参照物.
b.已知子类:
FileInputStream(文件字节输入流)
FileOutputStream(文件字节输出流)
fis:从文件中读取字节,如果读取到文件的末尾会返回-1
fos:往文件中写出字节数据.
可以实现数据的追加写入.在构造fos的时候需要设置,newFOS(file,true);
true:代表着追加写入.
注意:输入\输出流使用完以后一定要close
2.DataInputStream/DataOutputStream(数据流)
dis以及dos是对"字节流"的扩展,可以更方便的读写int,long,char等基本类型的数据.
dis跟dos是对基本字节流的封装.
不能直接对文件进行访问.而是要依赖fis|fos.
3.序列化以及反序列化
序列化:将内存中数据写到硬盘上的文件中.
数据--->nbyte
int a = 5 ;
fos.write(a) //低八位
dos.writeXXX(a) //完整的32位
反序列化:将硬盘上文件中的内容读取到内存中
n byte--->数据
fis.read()
dis.readXXX()
3.缓冲流
BufferedInputStream 缓冲输入流
BufferedOutputStream 缓冲输出流bis以及bos为IO操作提供了缓冲区.
一般打开文件进行写入或者读取操作时,都建议加上缓冲流.可以提供IO的性能.
缓冲流为读写都提供了缓冲区,数据读到缓冲区中,然后再写到缓冲区中.最后将缓冲区中的数据一次性写到硬盘上.
在使用的时候需要注意:
关闭输出流之前一定要保证缓冲区中的数据全部写出.
- Java知识点整理:第十二章:java文件系统管理、IO流(Input(输入)/Output(输出)) 、缓冲流
- 黑马程序员-java io(Input Output)流
- 【Java | IO】输出输入流
- 《黑马程序员》java笔记->IO(Input Output)流
- 黑马程序员:Java基础总结----IO(Input Output)流概述
- IO(Input Output)流
- IO(Input Output)流
- Java-IO输入与输出 知识点
- 第十二章 1 java输入流和输出流
- java io 缓冲流
- java-IO流3(缓冲输入字节流)
- java io系列23之 BufferedReader(字符缓冲输入流)
- java io系列23之 BufferedReader(字符缓冲输入流)
- Java-IO之BufferedInputStream(缓冲输入流)
- Java-IO之BufferedReader(字符缓冲输入流)
- java io系列23之 BufferedReader(字符缓冲输入流)
- Java-IO之BufferedInputStream(缓冲输入流)
- java-IO流4(缓冲输出字节流)
- 第十二周oj题目汉诺塔问题
- PHP中array_merge和array相加的区别分析
- eclispe初次运行Hadoop时,我遇到的问题。
- iOS开发-CocoaPods使用教程
- Java系列(十三)__Java新特性(泛型、枚举、Annotation)
- Java知识点整理:第十二章:java文件系统管理、IO流(Input(输入)/Output(输出)) 、缓冲流
- 第十二周-求斐波那契数列的第N项
- 22-Jquery data
- C语言条件编译及编译预处理阶段
- [深度学习论文笔记][Video Classification] Two-Stream Convolutional Networks for Action Recognition in Videos
- golang方法
- apache.common.dbutils的BeanHandler的“缺陷”?
- 将hdfs上的数据传入hbase表中
- 28-基础事件