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();

}

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
原创粉丝点击