2013.08.04
上课内容:IO流——管理文件读入写出
今天我们要上是IO流,我们回顾一下上节课的内容,上节课我们讲的文件的创建和删除,但是我们对文件的操作肯定不止于此。
这节课我们要讲的是文件的写入与读出,这里我们就要用到输入流:InputStream和输出流:OutputStream.
所谓文件输入流,就是我们从文件中读取到JVM内存的,这里有两个常用的构造方法:
FileInputStream(File file) :传入的是File类对象
FileInputStream(String name) :传入的是字符串类的对象,指的是文件的路径名
传入文件后,我们就可以对文件进行读入操作,这里我们常用的是read()方法,读取的是一个字节,返回的int类型。但是我们注意到,byte只有8位,最多也就是127,在有的情况下并不能满足我们的需求,所以我们又是要用到数据输入流:DataInputStream,这里我们可以调用方法readInt()读入一个数字 ,实际上是读取四个字节,然后返回一个int型的。
文件输出流,就是我们将我们指定的内容输出到指定的文件中,这里只有一个构造方法:
FileOutputStream(File file) :对File类对象输出流
FileOutputStream(String name) :传入的是字符串类的对象,指的是文件的路径名
我们定义好输出流对象,接着就要写入文件,同样这里我们要用到数据输出流:DataOutputStream。
运用这个输入流我们一般调用如下几种格式:
writeInt(int v) 以4字节形式写入基础输入流
writeBytes(String s) 将字符串按字节顺序写出到基础输出流中
用完数据输出流,我们要注意调用flush方法来清空此数据输出流。
而其他的IO流,我们都可以调用close方法来关闭他们,然后释放内存空间。
知道这些,我们也可以实现文件的拷贝啦!只要我们从一个文件读取到信息,然后再写入另一个文件就好了!
/**
* 拷贝文件
*
* @param file文件对象
* @param path要拷贝的路径
*/
public void filecopy(File file, String path) {
if (file.exists()) {
try {
File newFile = new File(path);//创建新的文件对象
InputStream is = new FileInputStream(file);//创建文件输入流
OutputStream os = new FileOutputStream(newFile);//创建文件输出流
byte temp;//创建临时字符变量
//循环,每读一个字符,就写一个字符
while ((temp = (byte) is.read()) != -1) {
os.write(temp);
}
os.close();//关闭输出流
is.close();//关闭输入流
} catch (Exception e) {
e.printStackTrace();
}
}
}