我的IO漫谈

来源:互联网 发布:nba2k13捏脸详细数据 编辑:程序博客网 时间:2024/06/18 13:11

                                                                                     我的IO漫谈(一)

         这只是一个初学者的一点一点的心得记录而已,请大家多多指教哦。。

            刚接触IO(java.io包),先是在写一个简单的文件搜索器,File类就体现出它在这个小软件上的强大了,只要在它的构造方法上加上文件路径,它就可以获取文件大小file.length(),判断文件是否存在file.exists(),判断该路径下的内容是否为文件file.isFile(),判断该路径下的内容是否为文件夹file.isDirectory(),列出该文件夹下的所有文件file.listFiles(),获取文件名file.getName(),获取文件的绝对路径file.getAbsolutePath()等等。这里要注意的是一个判断某个路径时出现层层覆盖的文件夹,要用什么方法来统计文件数和文件夹数呢?这里有一段代码可以解答:

                       if(file.exists()){//此路径存在
if(file.isFile()){//文件

System.out.println(file.getAbsolutePath());
}else if(file.isDirectory()){//文件夹

//列出此文件夹下所有的File对象
File[] files = file.listFiles();
for(int i=0;i<files.length;i++){
File f = files[i];
//递归
printFileName(f.getAbsolutePath());
}
}
}else{
System.out.println("路径有误!");
}

后来是在写文件的复制粘贴功能,我碰到的第一个类就是FileInputSteam,随之而来的就是FileOutputStream,然后就是一次又一次的read,write。。。。然后又要想着先是FileInputStream才是FileOutputStream,为什么呢,原因就是要先将所操作的文件从外存写入内存,这个写入操作是由FileInputStream实现的,再是将得到的数据从内存输出到目标路径下,这个输出操作是由FileOutputStream实现的。说到这里,又不得不提到read()(FileInputStream)和write()(FileOutputStream)的多参数形式,方便我们能够更灵活的实现我们想要的操作。FileInputSteam的int read()和int read(byte[] b, int off, int len),FileOutputStream的write()和write(byte[] b, int off, int len),一定记住是先read再write,先用FileInputStream再用FileOutputStream。还有就是IO操作是要处理异常的,io就是要读取外部的数据,而你又无法确定知道读进来的一定是程序能正确处理的数据,所以要try catch或者throws。但是到底是用哪种,这要看你的类是干什么用的,如果是工具类 需要其他类来调用使用的话最好是throws如果是正式使用的话肯定需要try catch。





0 0
原创粉丝点击