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方法来关闭他们,然后释放内存空间。
?
知道这些,我们也可以实现文件的拷贝啦!只要我们从一个文件读取到信息,然后再写入另一个文件就好了!
class="java"> /** * 拷贝文件 * * @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(); } } }
?