1 package runoob; 2 import java.io.File; 3 import java.io.FileInputStream; 4 import java.io.FileOutputStream; 5 import java.io.IOException; 6 import java.io.InputStreamReader; 7 import java.io.OutputStreamWriter; 8 9 public class FileDemo { 10 11 public static void main(String[] args) throws IOException { 12 // TODO Auto-generated method stub 13 String separator=File.separator; 14 String dir="temp01"+separator+"temp02"; 15 String fileName="hello.txt"; 16 File file=new File(dir, fileName); 17 if(file.exists()){ 18 System.out.println(file.getAbsolutePath()); 19 System.out.println(file.getName()); 20 System.out.println(file.length()); 21 }else{ 22 file.getParentFile().mkdirs(); 23 try { 24 file.createNewFile(); 25 } catch (IOException e) { 26 // TODO: handle exception 27 e.printStackTrace(); 28 } 29 } 30 31 /*String dirname="c:/mysql"; 32 File file=new File(dirname); 33 if(file.isDirectory()){ 34 System.out.println("Directory of "+dirname); 35 String[] strings=file.list(); 36 for(int i=0;i<strings.length;i++){ 37 File f=new File(dirname+"/"+strings[i]); 38 if(f.isDirectory()){ 39 System.out.println(strings[i]+" is a directory"); 40 }else{ 41 System.out.println(strings[i]+" is a file"); 42 } 43 } 44 }else{ 45 System.out.println(dirname+" is not a directory!"); 46 }*/ 47 48 /*System.out.println("file是一个文件:"+file.isFile()); 49 System.out.println("file是一个目录:"+file.isDirectory()); 50 System.out.println("file的文件名:"+file.getName()); 51 File parentFile=file.getParentFile(); 52 System.out.println("parentFile是一个目录:"+parentFile.isDirectory()); 53 System.out.println("parentFile是一个文件:"+parentFile.isFile()); 54 55 */ 56 /*if(file.isDirectory()){ 57 System.out.println("File是一个目录!"); 58 if(file.exists()){ 59 System.out.println("文件夹已存在!"); 60 }else{ 61 System.out.println("文件夹不存在"); 62 file.mkdirs(); 63 if(file.exists()) 64 System.out.println("文件夹已创建!"); 65 } 66 } 67 68 if(file.isFile()){ 69 System.out.println("File是一个文件!"); 70 if(file.exists()){ 71 System.out.println("文件已存在!"); 72 }else { 73 System.out.println("文件不存在"); 74 File file2=new File(file.getParent()); 75 if(file2.exists()){ 76 System.out.println("该文件的目录已存在!"); 77 file.createNewFile(); 78 System.out.println("文件已创建!"); 79 }else { 80 file2.mkdirs(); 81 System.out.println("文件目录已建立!"); 82 file.createNewFile(); 83 System.out.println("文件已建立!"); 84 } 85 } 86 }*/ 87 88 /*if(file.exists()){ 89 System.out.println("文件夹存在!"); 90 if(file.isDirectory()){ 91 System.out.println("文件存在!"); 92 }else{ 93 file.createNewFile(); 94 System.out.println("文件不存在,已创建文件!"); 95 } 96 }else{ 97 System.out.println("文件夹不存在!"); 98 File file2=new File(file.getParent());//获取指定文件的上层目录,用来创建文件夹~ 99 System.out.println("file2是一个目录:"+file2.isDirectory()+" file2是一个文件:"+file2.isFile()); 100 file2.mkdirs(); 101 file.createNewFile();//文件夹不存在,对应文件肯定也不存在咯,所以要新建! 102 }*/ 103 104 //这里插入一句,mkdirs()和mkdir()的区别在于,前者可以建立多级文件夹,后者只会建立一级文件夹。比如: 105 //new File("c:/temp/user/hehe").mkdirs()会建立三级目录,直到hehe。 106 //new File("c:/temp/user/hehe").mkdir()只会建立一级目录,hehe,如果前面两级目录不存在,则返回false! 107 // 108 109 FileOutputStream fOutputStream=new FileOutputStream(file); 110 OutputStreamWriter writer=new OutputStreamWriter(fOutputStream, "utf-8"); 111 writer.append("中文输入+English"); 112 writer.append(" "); 113 writer.append("English"); 114 writer.close(); 115 fOutputStream.close(); 116 117 FileInputStream fInputStream=new FileInputStream(file); 118 InputStreamReader reader=new InputStreamReader(fInputStream,"UTF-8"); 119 StringBuilder sBuilder=new StringBuilder(); 120 while(reader.ready()){ 121 sBuilder.append((char)reader.read()); 122 } 123 System.out.println(sBuilder.toString()); 124 reader.close(); 125 fInputStream.close(); 126 127 } 128 129 }
经过学习,我发现:
File file=new File(fileName);
如果fileName是一个文件名,比如c:/temp/hello.txt,那么这个File对象既不是一个file也不是directory,不晓得怎么回事。File对象貌似只是一个目录,可以包含文件和文件夹。
而使用new File(dir, fileName)构造方法建立的File对象则是一个file,文件。不是一个目录。
如果您觉得感兴趣的话,可以添加我的微信公众号:一步一步学Python
![](http://images2017.cnblogs.com/blog/993869/201711/993869-20171118215516327-881787609.jpg)