java IO之字节流与字符流

JAVA IO中的所有操作类都放在java .io包中。

主要的类和接口四:FileInputStreamOutputStreamReaderWriterSerialzable接口

File类在整个java.io包中是一个独立的类,此类主要功能是完成与平台无关文件操作。

创建文件public boolean createNewFile() throws IOException

D盘根目录创建singsong.txt文件

   
   
   
   
  1. import java.io.File; 
  2. import java.io.IOException; 
  3. public class FileDome { 
  4.     public static void main(String[] args) { 
  5.         File file = new File("D:\\singsong.txt");// 找到File类的实例 
  6.         try { 
  7.             file.createNewFile();// 创建文件 
  8.         } catch (IOException e) { 
  9.             e.printStackTrace(); 
  10.         } 
  11.     } 

删除文件:public boolean delete()

在删除文件时,要判断文件是否存在:public boolean exists()

   
   
   
   
  1. public class FileDome { 
  2.     public static void main(String[] args) { 
  3.         File file = new File("D:\\singsong.txt");// 找到File类的实例 
  4.         if (file.exists()) { 
  5.             file.delete(); 
  6.             System.out.println("成功删除文件"); 
  7.         } else { 
  8.             System.out.println("没有此文件"); 
  9.         } 
  10.     } 

在各个操作系统中,文件的分隔符是不一样的:

Windows\

Linux:/

Java本身属于跨平台的语言,那么应该可以适应各个不同的平台要求。那么为了解决可以自动适应不同系统的分隔符要求,所以在File类中提供了以下几个常量:

路径分隔符:public static final String pathSeparator,“;”

分隔符:public static final String separator,“/”或者“\

所以,对于实际的开发来说,必须使用这样的常量进行声明。

 

判断路径是文件还是文件夹

在程序中可以使用如下的方法进行判断:

判断是否文件夹:public boolean isDirectory()

判断是否文件:public boolean isFile()

   
   
   
   
  1. public class IsFileDome { 
  2.     public static void main(String[] args) { 
  3.     File file1 =new File("D:"+File.separator+"singsong.txt");    
  4.     File file2 =new File("D:"+File.separator+"javaWEB");     
  5.     System.out.println("singsong.txt = "+file1.isFile());//判断是否文件 
  6.     System.out.println("javaWEB = "+file2.isDirectory());//判断是否目录    
  7.     } 

列出目录中的内容

File类中提供了以下的两个方法进行目录的列表操作:

1public String[] list() 2public File[] listFiles()

   
   
   
   
  1. 1: 
  2. public class ListFileDome { 
  3.     public static void main(String[] args) { 
  4.         File file = new File("D:" + File.separator + "javaTest"); 
  5.         String path[] =file.list();//列出全部的内容,以字符串的形式 
  6.         for (int i = 0; i < path.length; i++) { 
  7.             System.out.println(path[i]); 
  8.         } 
  9.     } 

运行结果:

   
   
   
   
  1. singsong.txt 
  2. WEB 
   
   
   
   
  1. 2: 
  2. import java.io.File; 
  3. public class ListFileDome { 
  4.     public static void main(String[] args) { 
  5.         File file = new File("D:" + File.separator + "javaTest"); 
  6.             File path[] = file.listFiles();// 列出全部的子文件或文件夹 
  7.         for (int i = 0; i < path.length; i++) { 
  8.             System.out.println(path[i]); 
  9.         } 
  10.     } 

运行结果:

   
   
   
   
  1. D:\javaTest\singsong.txt 
  2. D:\javaTest\WEB 

从运行结果中可以知道两个操作同样属于列表的操作,但是后者却可以列出完整的路径,实际上此时,如果想要操作文件,则肯定使用后者最为方便,因为可以找到File类的对象,实际上就找到了完整的路径。

   
   
   
   
  1. import java.io.File; 
  2.  
  3. public class ListFileDome { 
  4.     public static void main(String[] args) { 
  5.         File file = new File("D:" + File.separator + "javaTest"); 
  6.         File path[] = file.listFiles();// 列出全部的子文件或文件夹 
  7.         for (int i = 0; i < path.length; i++) { 
  8.             System.out.print(path[i].getParent()+"--->"); 
  9.             System.out.println(path[i]); 
  10.         } 
  11.     } 

运行结果:

   
   
   
   
  1. D:\javaTest--->D:\javaTest\singsong.txt 
  2. D:\javaTest--->D:\javaTest\WEB 

创建目录及文件

   
   
   
   
  1. import java.io.File; 
  2. import java.io.IOException; 
  3. public class MakeDirDome { 
  4.     public static void main(String[] args) { 
  5.         File file = new File("D:" + File.separator + "javaTestdir" 
  6.                 + File.separator + "singsong" + File.separator + "test.txt"); 
  7.         file.getParentFile().mkdir();// 创建路径 
  8.         try { 
  9.             file.createNewFile(); 
  10.         } catch (IOException e) { 
  11.             e.printStackTrace(); 
  12.         } 
  13.     } 

列出一个目录下所有文件的路径,包括个子文件夹中的文件也都要列出

   
   
   
   
  1. import java.io.File; 
  2. public class AllListFileDome { 
  3.     public static void main(String[] args) { 
  4.         File file = new File("D:" + File.separator); 
  5.         list(file); 
  6.     } 
  7.  
  8.     public static void list(File file) { 
  9.         if (file.isDirectory()) { 
  10.             File lists[] = file.listFiles(); 
  11.             if (lists != null) { 
  12.                 for (int i = 0; i < lists.length; i++) { 
  13.                     list(lists[i]); 
  14.                 } 
  15.             } 
  16.         } 
  17.         System.out.println(file); 
  18.     } 

只能依靠递归完成。