我是靠谱客的博主 无限犀牛,最近开发中收集的这篇文章主要介绍filestatus java_io流函数略解(java_File)[一],觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

背景

最近在做安卓的过程中,因为im app经常涉及到读取与写入的io问题,所以总结一下。下文使用的是java语言。

实践

材料:

java

eclipse

1.File

在操作系统中我们一般能看到的就只有文件和文件夹。所以一般我们操作的一般也是他们,所以file就变得至关重要了,同样java把操作文件或文件夹的定义为File类,在基础包java.io中。

使用方式:

File file=new File("c:\test.txt");

上述实例化源码:

public File(String pathname) {

if (pathname == null) {

throw new NullPointerException();

}

this.path = fs.normalize(pathname);

this.prefixLength = fs.prefixLength(this.path);

}

从上述中查看看到在实例化的过程看到一个是序列化了路径,然后取得了路径前缀的长度。

值得注意的是:因为这里使用了c:test.txt,是使用//来表达,然而在linux中使用的却是/,File.separator可以取得当前系统分隔符,这降低了我们在写跨平台代码的错误率。

对文件的操作无非是增删改查,首先是从查看吧。查分为查看文件信息的读取查看。

查路径名:

File file=new File("c://test.txt");

System.out.println(file.getPath());

System.out.println(file.getAbsolutePath());

try {

System.out.println(file.getCanonicalPath());

} catch (IOException e) {

// TODO: handle exception

}

分别取得了我们输入的路径,绝对路径,以及规范的路径。

8ce861c060719e58d6128e78ad08d3c5.png

可以看出规范的路径把c盘这个c变成了大写,在这里我加上了try 和catch,如果不加的话会编译不过,这是因为编写规范路径的时候对path进行了验证。

下面是具体验证的源码:

if (isInvalid()) {

throw new IOException("Invalid file path");

}

final boolean isInvalid() {

if (status == null) {

status = (this.path.indexOf('u0000') < 0) ? PathStatus.CHECKED: PathStatus.INVALID;

}

return status == PathStatus.INVALID;

}

这是一种很常见的操作,在io操作中有很多需要我们处理的异常,有些刚开始学的人可能报错了觉得莫名奇妙。

查权限:

System.out.println(file.canRead());

System.out.println(file.canWrite());

System.out.println(file.canExecute());

883a9b2f718863be3bb67146ad0a5825.png

我们查看到都为false,这是为何?难道设置了权限。其实我根本就没有创建这个文件,这是一个很关键的地方,也就是这些函数我们只能相信true不能相信false,false有太多可能性了。

File 有文件的意思也有文件夹的意思,文件夹就有目录啊。

在查询目录下的文件之前,起码想好下面几件事:

是否存在

这是否是一个目录

是否可读

if(file.exists()&&file.isDirectory()&&file.canRead())

{

// get subdirectory and file in the file

file.listFiles();

}

甚至提供可以进行过滤:

file.listFiles(new FilenameFilter() {

@Override

public boolean accept(File dir, String name) {

return false;

}

});

例如需要知道某个文件夹是否存有某个文件:

File[] files=file.listFiles(new FilenameFilter() {

@Override

public boolean accept(File dir, String name) {

if (dir.isFile()&&name=="xxx") {

return true;

}

return false;

}

});

if (files.length>0) {

}

增与删:

对于文件:

bool createNewFile(): 创建一个文件;

bool delete():删除文件或文件夹;

对于文件夹:

boolean mkdir():创建一个目录;

boolean mkdirs():创建当前一个目录,和mkdir不同的是如果c:/parent/child,如果parent不存在的时候会帮助我们创建;

boolean delete():删除文件或文件夹;

上述这些都觉得贫乏,那么临时文件可以说是一个亮点,比如我们写一些兴趣性代码的时候,创建了一个文件。我们想用完就删,但是呢,中间报错了,可能就需要手动了。

try {

File file=File.createTempFile("tempTest",".txt");

file.deleteOnExit();

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

上述也许会解放你的双手。

如果需要创建在某个特定的目录下:

File f=new File("c:\")

File file=File.createTempFile("tempTest",".txt",f);

第三个参数是一个File 类型,里面是需要放置的目录。

总结

本来打算自己总结一篇就ok,然而发现不可能的了。上述纯属个人回忆,无实际考察,如有帮助不甚荣幸,有错之处望请指正。

最后

以上就是无限犀牛为你收集整理的filestatus java_io流函数略解(java_File)[一]的全部内容,希望文章能够帮你解决filestatus java_io流函数略解(java_File)[一]所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部