Java学习笔记之IO流

IO : input ouput 流 相对于java(内存)java

File: 文件,是JAVA中的对象,用来映射硬盘中的文件或者目录算法

注意:java中‘\’是转义字符,因此‘\\’才能表示目录数组

File经常使用方法:测试

 1         File file=new File("D:\\File\\a");  2         System.out.println("此抽象路径名表示的文件是否可执行---->"+file.canExecute());  3         System.out.println("此抽象路径名表示的文件是否可读---->"+file.canRead());  4         System.out.println("此抽象路径名表示的文件是否可写---->"+file.canWrite());  5         System.out.println("此抽象路径名表示的文件是否存在---->"+file.exists());  6         System.out.println("此抽象路径名表示的文件是不是一个目录---->"+file.isDirectory());  7         System.out.println("此抽象路径名表示的文件是不是一个文件---->"+file.isFile());  8         System.out.println("此抽象路径名表示的文件是不是一个隐藏文件---->"+file.isHidden());  9         System.out.println("getName-->"+file.getName());// 获取文件的名字
10         System.out.println("getName-->"+file.getPath());// 获取文件的路径

 

获取目录下全部文件并遍历:spa

 

 1         //放进一个字符串数组
 2                 String [] a=file.list();  3         for (String s : a) {  4  System.out.println(s);  5  }  6         
 7         //放进一个File数组
 8         File [] b=file.listFiles();  9         for (File f : b) { 10  System.out.println(f); 11         }

 

 

列出目录下的全部子文件(递归算法)code

 

 1 public static void showAllFiles(File file){  2         //用一个文件数组存放目录中的文件
 3         File [] files=file.listFiles();  4         //遍历
 5         for (File f : files) {  6             //文件为空,终止程序
 7             if(f==null){  8                 return;  9  } 10             //文件为目录形式,递归调用自己
11             if(f.isDirectory()){ 12  showAllFiles(f); 13             //是文件就打印路径名和文件名
14             }else{ 15                 if(f.getName().endsWith(".exe") || f.getName().endsWith(".tmp")){ 16                     System.out.println(f.getPath() + f.getName()); 17  } 18  } 19  } 20  } 21         //测试 22 // File file1=new File("D:\\"); 23 // showAllFiles(file1);

 

 

 

字节流:对象

 

 1 /**
 2  * 字节流传输数据  3  * @param copyFile 输入目标文件  4  * @param targetFile 输出目标文件  5      */
 6     public static void inputAndOutput(File copyFile,File targetFile){  7         
 8         //定义输入流
 9         FileInputStream  fis=null; 10         //定义输出流
11         FileOutputStream  fos=null; 12         try { 13             //建立输入流对象
14             fis=new FileInputStream(copyFile); 15             //建立输出流对象
16             fos=new FileOutputStream(targetFile); 17             
18             //定义byte数组存放字节流(自定义大小)
19             byte [] b=new byte[1024]; 20             //返回一次流对象传输的字节大小
21             @SuppressWarnings("unused") 22             int i=0; 23             //当为空时会返回-1,以此终止流的传输
24             while((i=fis.read(b))>0){ 25  fos.write(b); 26  } 27             
28         } catch (IOException e) { 29  e.printStackTrace(); 30         } finally{ 31             //最后释放流对象
32             try { 33                 if(fis!=null){ 34  fis.close(); 35  } 36                 if(fos!=null){ 37  fos.close(); 38  } 39                 
40             } catch (IOException e) { 41  e.printStackTrace(); 42  } 43  } 44         
45  } 46         //字节流传输数据测试 47 // File copyFile =new File("D:\\File\\a\\b\\Integer.png"); 48 // File targetFile=new File("D:\\File\\a\\Integer.png"); 49 // inputAndOutput(copyFile,targetFile);

 

 

字符流blog

字符流输入:递归

 

 1 /**
 2  * 读取文件内容到控制台  3  * @param file  4      */
 5     public static void input(File file) {  6         //字符流对象
 7         FileReader fr = null;  8         //包装字符流对象
 9         BufferedReader br = null; 10         try { 11             fr = new FileReader(file); 12             br = new BufferedReader(fr); 13             String s=null; 14             do { 15                 //按行读取
16                 s=br.readLine(); 17                 if(s!=null){ 18  System.out.println(s); 19  } 20             } while (s!=null); 21             
22         } catch (IOException e) { 23  e.printStackTrace(); 24         } finally { 25             //关闭流,先外后内
26             try { 27                 if (br != null) { 28  br.close(); 29  } 30                 if (fr != null) { 31  fr.close(); 32  } 33             } catch (IOException e) { 34  e.printStackTrace(); 35  } 36  } 37 
38     }

 

字符流输出:内存

 1 //字符流输出
 2     public static void Output(File file){  3         FileWriter fw=null;  4         BufferedWriter bw =null;  5         try {  6             fw=new FileWriter(file,true);//true 表示在文件中追加,false表示覆盖
 7             bw= new BufferedWriter(fw);  8             bw.write("你好呀");  9             bw.newLine();//换行
10             bw.write("世界"); 11  bw.flush(); 12         } catch (IOException e) { 13  e.printStackTrace(); 14         } finally { 15             //关闭流,先外后内
16             try { 17                 if (bw != null) { 18  bw.close(); 19  } 20                 if (fw != null) { 21  fw.close(); 22  } 23             } catch (IOException e) { 24  e.printStackTrace(); 25  } 26  } 27     
28     }

测试:

 

1 public static void main(String[] args) { 2         File file = new File("D:\\File\\a\\a.txt"); 3         // 4  input(file); 5  Output(file); 6 
7     }
相关文章
相关标签/搜索