File文件操作类(File类基本操作)
内容简介
- 具体内容
- File类的基本使用
- File类处理
一、具体内容
如果要学好Io,那么必须清楚抽象类、IO的操作部分重点掌握两个代码模型。
这两个模型会了,百分之九十的开发就拿下了。整个IO的核心组成:五个类(file、Outputstream、Inputstream、Writer、Reader)一个接口(Serializable)。
在java.io包之中File类是唯一一个与文件本身操作(文件的创建、删除、取得文件信息等等)有关的程序类。
二、File类的基本使用
java.io.File类是一个普通的类,所以这个类的使用直接产生实例化对象即可。
所有的IO操作都在java.io包中,所以在java.io包中找到File类打开之后有一个Comparable可以比较大小。
如果要实例化对象则需要使用到两个构造方法:
- 找到File(String pathname)里的
public File(String pathname)表示的是路径名称。
- 找到File(File parent,String child)里的
public File(File parent,String child)设置父路径或子路径。
想要进行文件的创建最好的方法是写入
File file=new file();比如现在想操作D盘中的hello.txt文件:File file=new file(“d:\hello.txt” );这里hello是一个文件,但是\在程序中应该使用\表示,定义要操作的文件路径。
如果进行文件的基本操作,可以使用File类中的如下方法
这里fs指的是Filesystem文件系统,这里是一个抽象类,
3、在java里找到createnewFile()里的
public boolean createNewFile()throws IOException这描述的是创建一个新文件,根据路径来创建。
范例:创建新文件
在上述基础上写入file.createnewFile()创建新文件。写完后直接执行。然后打来电脑d盘有个hello.txt点开里面没有内容,所以File类只是创建文件本身,但是对其内容不负责。能创建文件,也能删除文件。
- 删除文件:在java中找到delete()里的
public boolean delete()删除文件的过程。但是删除文件之前最好先确定文件存不存在。
- 判断文件是否存在:在java 里找到exists()里的
public boolean exists()
范例:编写一个文件的基本操作
如果文件不存在则进行一个创建,如果文件存在则进行删除。
在程序中写入if (file.exists())如果文件存在则file.delete();否则要进行创建else{file.createNewfile}。
本来d盘中有hello.txt 执行就被删除了,再执行一次就被创建出来了,这样最简化的文件处理就完成了。
以上实现了最简化的文件处理操作,但是此时的代码中存在两个问题:
- 对于项目的开发只有Windows(Macbook)最好用,因为在有图形化界面状态下是很方便的。
但是在实际的项目部署环境都要求在UNIK、Linux之中,那么这个时候路径的问题就很麻烦,Windows使用的是“\”而UNIK下使用的都是“/”,
所以一般在使用路径分隔符的时候都会采用File类的一个常量来描述:
在Java中打开separator里的public static final String separator这里所有的常量理论上都应该是大写,但在这separator用了小写,因为这些命名规范实在File类1.0以后才有的,所以以后路径要File file=new File(“d:”+File.separator+“hello.txt)这样写。
点开separator出现separatorChai=fs.getSeparator,fs之前有Filesystem类,打开后有一堆的操作,这些都是有操作系统来决定的。
所以,由不同的操作系统的JVM来决定最终的separator是什么内容。
这时候的代码才是最标准的,执行之后文件不见了,再一执行文件出来了。
所以这是在以后写代码过程中必须要记住的,这种路径分隔符在开发中是一定要写的。
- 在java里面如果要进行文件的处理操作是要通过本地操作系统支持的,这之中如果操作的是同名文件就有可能出现有延迟的问题。
如果在过程写代码出现了同名问题,而且每次设置完后文件都在,这时候建议加一个延迟:
Thread.sleep(100);但是在操作中创建或删除建议用不同名文件进行,因为它本身是有延迟。
三、File类处理
在整个File类处理用的位是file位,但实际上file位里还嵌套着FileSystem,这是一个抽象类,等于file位要操作文件时是通过了FileSystem,FileSystem定义了所有操作方法,而后在JVM中实现。
比如WindowsFileSystem由它来负责整体的操作实现,实现中需要调用操作系统文件控制函数,就是说WindowsFileSystem的实现位在整个JVM之中还要找到其他的位共同实现文件的处理,在这之中有些延迟是很正常的。
如下:
这就是之所以会产生延迟,但是不是大问题,只要避免重名操作,这些问题就都可以解决