在 Java IO实际上很好的体现了Java 的面向对象的设计思想
一个接口或抽象类的具体行为由子类决定,那么根据实例化子类的不同完成的功能也不同
Java IO中的所有操作类都放在java.io 包中
主要的类和接口是:File、InputStream、OutputStream、Reader、Writer、Seralzable 接口
File
File 类在整个java.io 包中是一个独立的类,此类的主要功能是完成与平台无关的文件操作,例如:创建文件、删除文件等等
创建文件
例如,现在要在D盘上创建一个demo.txt的文件
创建文件的方法:public bollean createNewFile() throws Exception
package org.iodemo; import java.io.File; import java.io.IOException; public class IoDemo01 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub File file = new File("D:\\1.txt"); try{ file.createNewFile(); }catch(IOException e){ e.printStackTrace(); } } }
删除文件
如果要想删除文件则使用:public bollean delete()
package org.iodemo; import java.io.File; import java.io.IOException; public class IoDemo02 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub File file = new File("D:\\1.txt"); file.delete(); } }
在各个操作系统中,文件的分隔符是不一样的:
windows:\
linux:/
Java 本身属于跨平台的语言,那么应该可以适应各个不同的平台要求。那么为了解决可以自动适应不同系统的分隔符要求,所以在File类中提供了以下几个常量:
路径分隔符: public static final String pathSeparator “;”
分隔符: public static final String separator "\" 或者 "/"
所以,对于实际的开发来讲,必须使用这样的常量进行声明
判断文件是否存在
提供以下的方法:public boolean exists()
package org.iodemo; import java.io.File; import java.io.IOException; public class IoDemo03 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub File file = new File("D:\\1.txt"); if (file.exists()){ file.delete(); }else{ try { file.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
要求编写一个程序,此程序的主要功能如下,如果文件存在,则删除,如果文件不存在则创建一个新的文件
判断路径是文件还是文件夹
在程序中可以使用如下的方法进行判断
判断是否是文件夹: public boolean isDirectory()
判断是否是文件:public bollean isFile()
package org.iodemo; import java.io.File; public class IoDemo05 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub File file = new File("D:"+File.separator+"a.txt"); System.out.println(file.isDirectory()); System.out.println(file.isFile()); } }
列出目录中的内容
在File 类中提供了以下的两个方法进行目录的列表操作
public String[] list()
public File[] listFiles()
package org.iodemo; import java.io.File; public class IoDemo08 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub File file = new File("D:"+File.separator+"Download"); String[] files = file.list(); for (int i=0;i<files.length;i++){ System.out.println(files[i]); } } }
package org.iodemo; import java.io.File; public class IoDemo08 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub File file = new File("D:"+File.separator+"Download"); File[] files = file.listFiles(); for (int i=0;i<files.length;i++){ System.out.println(files[i]); } } }
这两个操作都同样属于列表的操作,但是后者却可以列出完整的路径,实际上此时,如果为更加清楚的表示出列出的是路径
package org.iodemo; import java.io.File; public class IoDemo08 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub File file = new File("D:"+File.separator+"Download"); File[] files = file.listFiles(); for (int i=0;i<files.length;i++){ System.out.println(files[i].getParent()+"-->"+files[i].getPath()); } } }
创建目录
使用mkdir()方法即可
package org.iodemo; import java.io.File; public class IoDemo06 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub File file = new File("D:\\123"); file.mkdir(); } }
当然,在创建的时候也可以在一个文件夹下创建文件
package org.iodemo; import java.io.File; import java.io.IOException; public class IoDemo09 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub File file = new File("D"+File.separator+"Demo"+File.separator+"test.demo"); file.getParentFile().mkdir(); try { file.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
package org.iodemo; import java.io.File; public class IoDemo07 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub File file = new File("D:"+File.separator); getFile(file); } public static void getFile(File f){ if (f.isDirectory()){ File lists[] = f.listFiles(); if (lists != null){ for (int i=0;i<lists.length;i++){ getFile(lists[i]); } } } System.out.println(f); } }