您的位置:首页 > 编程语言 > Java开发

java学习之六(IO流上篇)

2016-07-08 06:37 399 查看
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的性能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息