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

Java中File类的使用(二)

2013-07-29 16:18 148 查看
在上一篇中,我们已经知道了怎么创建目录(文件夹)和文件,接下来我们讨论下怎么向文件中写东西和读东西。

在我们所写的程序中,要与文件相互访问就必须用的的概念,那么什么是呢?

流机制是JAVA及C++中的一个重要的机制,通过流能使我们能自由地控制包括文件,内存,IO
设备等等中的数据的流向。
流是一串连续不继的数据的集合,就像水管里的水流,在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流。数据写入程序可以是一段一段地向数据流管道中写入数据,这些数据段会按先向顺序形成一个长的数据流。对数据的读取程序来说,看不到数据流在写入时的分段情况,每次可以读取其中的任意长度的数据,但只能先读取前面的数据后,再读取后面的数据。不管写入时是将数据分多次写入,还是作为一个整体一次写入,读取时的效果都是完全一样的。
在Java中流分为输入流和输出流。

下面举一些流的方法:

一.输入流:

1.read(); 读入一个字节并返回,返回类型为int,返回-1表示已读完。

2.read(byte[] b);一次读入尽可能多的字节去填满数组b,填不满用0补,返回实际读到的字节数,-1表示已读完。
3.read(byte[] b,int off,int, len); 一次读入尽可能多的字节去填满字节数组b从off开始的len个空间。

4.close();关闭输入流。

二.输出流:

1.write(); 向文件中写入一个字节的数据。

2.write(byte[] b); 向文件中写入数组b,数组空余的用0来填充。

3.write(byte[] b, int off,int len); 向文件中写入数组b的数据,从off开始长度为len的数据,同样数组len中的空余用0来填补。

4.flush();将内存缓冲区中的数据读入程序/向文件中写入。

5.close(); 关闭输出流。

下面是我写的一个小程序:

package io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test006 {
public static void main(String[] args) {
FileInputStream is = null;//创建输入流引用
FileOutputStream os = null;//创建输出流引用
int i = 0;
byte[] arr = new byte[16*1024];//定义一个数组用来存放读入的数据
try {
is = new FileInputStream("D:\\a.txt");//给输入流的引用赋予对象,参数为文件的路径
os = new FileOutputStream("D:\\b.txt");//给输出流的引用赋予对象
while((i = is.read(arr))!=-1){ //判断是否读完,没读完继续读,读完关闭输入输出流
//              i = is.read();
os.write(arr,0,i);//讲读入的数据写入到输出流中,由输出流写入文件中
}
} catch (FileNotFoundException e) {//对输入流的文件找不到的异常处理

e.printStackTrace();
} catch (IOException e) {//对输出流的异常处理

e.printStackTrace();
} finally{
try {
is.close();//关闭输入流
os.close();//关闭输出流
} catch (IOException e) {//对无法关闭输入输出流的异常处理

e.printStackTrace();
}
}
}
}
注意: 在使用流时,一定要注意异常的处理,在平时练习时可以抛给编译器,但在正式开发中,一定不能抛给编译器(会使程序运行崩溃),一定要一步步处理好。最好自己写异常输出语句,使用户能够清楚的知道为什么程序不执行。

总结:在Java中,程序与文件之间靠流来联系,对流进行读写即为对文件的读写,虽然让人不易理解但你可以把流就看做成文件的一种载体,用File()方法给文件赋予流这个载体,程序对留这个载体的读写就是对文件的读写。

本文出自 “努力学习成就梦想” 博客,请务必保留此出处http://zhaoyanming.blog.51cto.com/7609220/1259749
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: