`
xitongyunwei
  • 浏览: 926339 次
文章分类
社区版块
存档分类
最新评论

io操作

 
阅读更多

今天看java的io操作,不得不承认,java的io真的相当强大,它将几乎所有要用的操作都封装好了,这恰恰是我不太喜欢的一点,不过个人喜好放边上,该会的还是要会


首先看下FILE类吧
它是代表磁盘文件本身的对象,磁盘文件就是我们磁盘上的文件,C盘D盘里德文件都是磁盘文件。
按照一般思路,我们一般需要新建一个文件:
新建文件方法就是new一个FILE,呵呵,感觉好白痴哦
FILE = new FILE("c://hello.txt"); //不难看出 c://hello.txt 这个是路径加文件名。
然后调用fp.createNewFile();就创建了这个文件啦。
调用fp.mkdir();就创建了这个文件夹啦。
调用fp.mkdirs();就能创建多级文件夹啦。
至于FILE的API不想在这里写很多,jdk帮助文档里面都可以查到。

这个相对于我们C的文件操作,我有一点点想说的
FILE *fp;
fp=fopen("wenjianming",r+);
当然C还需要判断打开成功与否,等等一系列安全操作,我这里就省略了,毕竟主题不是C嘛,但是,我们java难道不需要去处理这些特殊情况吗?
当然需要,下面我们看看是怎么处理的,这里我们就会看到抛大量异常以及大量的异常处理哦,呵呵。从jdk文档里我们也可以看到的,几乎所有接口都需要去抛异常。


FILE = new FILE("c://hello.txt");
这里有一个小小的疑问,我们程序中如果只有这么一句的话,我想当然的认为我的文件夹下面应该已经创建了这个文件了,可打开目录下一看,瀑布汗,么有!!找了找确定程序肯定没有问题(毕竟就这一句话嘛)。为什么文件没有创建呢??而要执行下面的语句才能进行创建呢。这些个是java封装的io,我也不清楚,只是做一点小小的猜想吧:我们new了FILE以后,只是在内存中有了这么一个东西,相当于一个标识符,并没有将它写到硬盘上去,为了方便我们下面去指定要创建的是目录还是文件,所以创建一个文件需要分成两步来做,首先,new一个FILE,然后,指定是要创建一个File,还是dir,调用不同的方法。相对于C++那边常常出现问题,所以这个办法还是相当聪明的。

这两个的区别是我们的C可以指定我们使用这个文件时候的权限。我们就想java是不是也应该要能指定呢?
我们可以看到FILE的API中有setReadonly();setWriteonly();等等的实现接口,OK,直接调函数就行啦。

如果在我们新建之前文件已经存在了怎么办?如果磁盘满了,创建失败了呢。
照样有API exits(),哈哈,就是那么简单,自己看API,会有意想不到的收获哦。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics