IO流介绍:
io就是Input/Output的缩写形式,Input是输入流,Output是输出流。
流:传递数据的通道,流关心的是数据内容,因为流就是与数据打交道。
io分8位流和16位流。8位流又叫字节流,16位流又叫字符流。在应用中用的最多的是8位流,因为所有的文件都是以字节组成,16位流只适合处理文字、字符上的事情,因为16位流会转化成字符。
io流的操作类都在java.util这个包下。
File类:
File类并不是对文件本身的内容进行操作,file只是对文件路径的描述和获得文件的周边信息,例如像文件的字节大小、文件的路径、文件的修改时间、文件是否可读可写等信息的获得。并不能对文件的内容进行操作。
因为文件的内容不包括文件的周边信息,文件的周边信息都是存放在操作系统里的。例如文件的后缀,在Windows操作系统里,文件的后缀是用来绑定执行程序的。所以File类更像是路径的封装对象。
文件的周边信息图片:
构建File类对象的时候需要传递一个字符串描述的路径,这个路径可以是文件路径,也可以是目录路径。
路径分:1.绝对路径 2.相对路径
绝对路径的写法,就是把从盘符详细到文件的路径:
相对路径的写法,相对路径的文件必须在工程目录下:
两种路径合并的写法:
File类的方法:
File类有很多方法:
System.out.println(file.exists()); 判断路径描述是否存在
System.out.println(file.isFile()); 判断是不是文件
System.out.println(file.isDirectory()); 判断是不是文件夹
System.out.println(file.isAbsolute()); 判断是不是绝对路径
System.out.println(file.isHidden()); 判断是不是隐藏文件呢?
System.out.println(file.canRead()); 判断能不能读
System.out.println(file.canWrite()); 判断能不能写
System.out.println(file.canExecute()); 判断是否能执行
System.out.println(file.length()); 获得文件的长度 单位是字节
System.out.println(newDate(file.lastModified()).toLocaleString()); 获得最后的修改时间
System.out.println(file.getPath()); 得到里面设置的路径
System.out.println(file.getAbsolutePath()); 得到绝对路径
System.out.println(file.getName());得到文件名称
file.mkdirs(); 批量创建文件夹
file.mkdir(); 单个创建文件夹
System.out.println(f.getParentFile().getParent()); 获得父路径的父路径,也就是获得上两层的路径
System.out.println(Test.class.getResource(".").getPath()); 获得当前类的路径,也就是class文件的路径
file.delete(); 立即删除文件,文件夹也可以删除,但是文件夹里不能有内容,如果有内容则不能执行删除。
file.deleteOnExit(); 程序关闭之前删除,如果是非法关闭,就不会执行删除。
File.createTempFile();创建临时文件方法。可以创建临时文件,需要以字符串的方式描述文件的前缀和后缀,可以指定创建的路径,如果不指定创建的路径,就会默认在操作系统的临时文件目录下创建。
代码示例:
createNewFile();创建文件方法,此方法可以创建一个文件,这个方法有boolean类型的返回值,创建成功了就返回true,创建失败则返回false。
代码示例:
renameTo();剪切并可以重命名文件方法。此方法可以将指定路径下的文件剪切到另一个路径下,并且能够重命名。这个方法实际上是把原来的文件复制了然后粘贴到指定的路径下后再把原来的文件删除了,所以需要重新写文件名才可以实现剪切,此方法也有boolean类型的返回值。
代码实例:
File.listRoots();使用这个方法会返回一个File类型的数组,获得的是机器盘符,在linux操作系统下则是获取根目录文件,因为在linux操作系统里是没有盘符的只有文件。
代码示例:
运行结果:
使用以上知识点做一个U盘发现器:
运行结果:
本文转自 ZeroOne01 51CTO博客,原文链接:http://blog.51cto.com/zero01/1976613,如需转载请自行联系原作者