zoukankan      html  css  js  c++  java
  • IO知识点整理(文件File类的使用)

    一: 

    1.API

      

    2.构造函数的程序

      注意这集中构造函数的特点。

      同时,字段separator的使用。

     1 import java.io.File;
     2 
     3 public class Test101 {
     4     public static void main(String[] args) {
     5         //f1
     6         File f1=new File("a.txt");
     7         //f2
     8         File f2=new File("e:\ty","b.txt");
     9         //f3
    10         File d=new File("e:\tyty");
    11         File f3=new File(d,"c.txt");
    12         //separator
    13         File f4=new File("e:"+File.separator+"yu"+File.separator+"d.txt");
    14         //
    15         System.out.println("f1="+f1);
    16         System.out.println("f2="+f2);
    17         System.out.println("f3="+f3);
    18         System.out.println("f4="+f4);
    19     }
    20 }

    3.结果

      

    二:增删改查

    1.常见的方法

      1,创建。
        boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false。
        和输出流不一样,输出流对象一建立创建文件。而且文件已经存在,会覆盖。

        boolean mkdir():创建文件夹。
        boolean mkdirs():创建多级文件夹。

      2,删除。
        boolean delete():删除失败返回false。如果文件正在被使用,则删除不了返回falsel。
        void deleteOnExit();在程序退出时删除指定文件。


      3,判断。
        boolean exists() :文件是否存在.
        isFile():
        isDirectory();
        isHidden();
        isAbsolute();

      4,获取信息。
        getName():
        getPath():
        getParent():

        getAbsolutePath()
        long lastModified()
        long length()

    2.程序

     1 import java.io.File;
     2 import java.io.IOException;
     3 
     4 import javax.swing.plaf.synth.SynthSeparatorUI;
     5 /**
     6  * 文件的创建,删除,判断,获取
     7  * @author Administrator
     8  *
     9  */
    10 public class Test102 {
    11     public static void main(String[] args) throws IOException {
    12         getMethod();
    13     }
    14     //createNewFile,mkdir,mkdirs,isDirectory,isFile,isAbsolute,exists
    15     public static void mkMethod() throws IOException{
    16         File f=new File("a.txt");
    17         //System.out.println(f.createNewFile());
    18         System.out.println(f.exists());
    19         System.out.println(f.canExecute()+"...");
    20         System.out.println(f.mkdir());         //true
    21         System.out.println(f.isDirectory());   //true
    22         System.out.println(f.isFile());        //false
    23         System.out.println(f.isAbsolute());
    24     }
    25     //delete
    26     public static void deMethod() throws IOException{
    27         File f=new File("a.txt");
    28         System.out.println(f.delete());
    29     }
    30     //getPath,getAbsolutePath,getParent,getName
    31     public static void getMethod() throws IOException{
    32         File f=new File("b.txt");
    33         System.out.println(f.getPath());
    34         System.out.println(f.getAbsolutePath());
    35         System.out.println(f.getParent());
    36         System.out.println(f.getName());
    37     }
    38 }

    3.renameTo的程序

     1 import java.io.File;
     2 
     3 public class Test103 {
     4 /**
     5  * reNameTo
     6  * 相当于剪切复制
     7  */
     8     public static void main(String[] args) {
     9         File f1=new File("a.txt");
    10         File f2=new File("b.txt");
    11         System.out.println(f1.renameTo(f2));
    12     }
    13 }

    三:列表

    1.罗列全部的列表

      注意的是list与listFile的区别

     1 import java.io.File;
     2 /**
     3  * list与listFile的区别
     4  * @author Administrator
     5  *
     6  */
     7 public class Test104 {
     8     public static void main(String[] args) {
     9         //listFileMethod();
    10         listMethod();
    11     }
    12     public static void listFileMethod(){
    13         File f=new File("E:\Summary6\demo1");
    14         File[] dir=f.listFiles();
    15         for(File file : dir){
    16             System.out.println(file.getName()+"..."+file.length());
    17         }
    18     }
    19     public static void listMethod(){
    20         File f=new File("E:\Summary6\demo1");
    21         String[] str=f.list();
    22         for(String s : str){
    23             System.out.println(s);
    24         }
    25     }
    26 }

    2.过滤需要的文件夹

      注意:留下的是经过过滤条件筛选后的文件

     1 import java.io.File;
     2 import java.io.FilenameFilter;
     3 
     4 public class Test105 {
     5 
     6     public static void main(String[] args) {
     7         filterMethod();
     8     }
     9     public static void filterMethod(){
    10         File dir=new File("e:\");
    11         String[] arr=dir.list(new FilenameFilter(){
    12             @Override
    13             public boolean accept(File dir, String name) {
    14                 
    15                 return name.endsWith(".rrr");
    16             }    
    17         });
    18         for(String name:arr){
    19             System.out.println(name);
    20         }
    21     }
    22 }

    3.listRoot:打印盘符

     1 import java.io.File;
     2 
     3 public class Test106 {
     4 /**
     5  * listRoot:打印盘符
     6  * @param args
     7  */
     8     public static void main(String[] args) {
     9         File[] f=File.listRoots();
    10         for(File str : f){
    11             System.out.println(str);
    12         }
    13     }
    14 }

    4.效果

      

    5.循环打印

     1 import java.io.File;
     2 
     3 /**
     4  * 循环打印文件夹下的文件,以及下一层的文件夹中的文件
     5  */
     6 public class Test107 {
     7     public static void main(String[] args) {
     8         showMethod();
     9     }
    10     public static void showMethod(){
    11         File dir=new File("E:\gitFile\gs-rest-service");
    12         loopMethod(dir,0);
    13     }
    14     public static void loopMethod(File dir,int level){
    15         System.out.println(getLevel(level)+dir.getName());
    16         level++;
    17         File[] files = dir.listFiles();
    18         for(int x=0; x<files.length; x++)
    19         {
    20             if(files[x].isDirectory())
    21                 loopMethod(files[x],level);
    22             else
    23                 System.out.println(getLevel(level)+files[x]);
    24         }
    25     }
    26     public static String getLevel(int level){
    27         StringBuilder sb = new StringBuilder();
    28         sb.append("|  ");
    29         for(int x=0; x<level; x++)
    30         {
    31             sb.insert(0,"|  ");
    32         }
    33         return sb.toString();
    34     }
    35 }

    6.效果

      

    四:打印流

    1.介绍

      打印流主要包括字节打印流与字符打印流

      相对而言字符打印流更加常用。

    2.字节打印流:
      PrintStream
      构造函数可以接收的参数类型:
        1,file对象。File
        2,字符串路径。String
        3,字节输出流。OutputStream

    3.字符打印流:
      PrintWriter
      构造函数可以接收的参数类型:
        1,file对象。File
        2,字符串路径。String
        3,字节输出流。OutputStream
        4,字符输出流,Writer。

    4.程序

     1 import java.io.BufferedReader;
     2 import java.io.FileWriter;
     3 import java.io.IOException;
     4 import java.io.InputStreamReader;
     5 import java.io.PrintWriter;
     6 
     7 /**
     8  * 关于printWriter的使用
     9  */
    10 public class Test108 {
    11 
    12     public static void main(String[] args) throws IOException {
    13         BufferedReader bufr=new BufferedReader(
    14                 new InputStreamReader(System.in));
    15         PrintWriter out=new PrintWriter(new FileWriter("acb.txt"),true);
    16         String line=null;
    17         while((line=bufr.readLine())!=null){
    18             if(line.equals("over"))
    19                 break;
    20             out.println(line);
    21         }
    22         bufr.close();
    23         out.close();
    24     }
    25 
    26 }

    五:properties特性

    1.介绍

      Properties是hashtable的子类。
      也就是说它具备map集合的特点。而且它里面存储的键值对都是字符串。
      是集合中和IO技术相结合的集合容器。
      该对象的特点:可以用于键值对形式的配置文件。
      那么在加载数据时,需要数据有固定格式:键=值。

    2.设置与获取

     1 import java.util.Properties;
     2 import java.util.Set;
     3 public class Test109 {
     4     public static void main(String[] args) {
     5         Properties pro=new Properties();
     6         //set
     7         pro.setProperty("zhangsan", "89");
     8         pro.setProperty("lisi", "77");
     9         pro.setProperty("wangwu","90");
    10         //get
    11         System.out.println(pro.getProperty("zhangsan"));
    12         //特有的获取方法
    13         Set<String> value=pro.stringPropertyNames();
    14         for(String name : value){
    15             System.out.println(name+"="+pro.getProperty(name));
    16         }
    17     }
    18 }

    3.运行效果

      

    4.将文件中的值存放到properties集合中

     1 import java.io.BufferedReader;
     2 import java.io.FileNotFoundException;
     3 import java.io.FileReader;
     4 import java.io.IOException;
     5 import java.util.Properties;
     6 public class Test110 {
     7     public static void main(String[] args) throws IOException {
     8         BufferedReader bufr=new BufferedReader(new FileReader("info.txt"));
     9         Properties pro=new Properties();
    10         String line=null;
    11         while((line=bufr.readLine())!=null){
    12             String[] str=line.split("=");
    13             pro.setProperty(str[0], str[1]);
    14         }
    15         bufr.close();
    16         System.out.println(pro);
    17     }
    18 }

    5.运行结果

      

    六:文件的切割与合并

    1.文件的合并

     1 import java.io.FileInputStream;
     2 import java.io.FileNotFoundException;
     3 import java.io.FileOutputStream;
     4 import java.io.IOException;
     5 import java.io.SequenceInputStream;
     6 import java.util.Enumeration;
     7 import java.util.Vector;
     8 public class Test111 {
     9     public static void main(String[] args) throws IOException {
    10         Vector<FileInputStream> vector=new Vector<FileInputStream>();
    11         vector.add(new FileInputStream("1.txt"));
    12         vector.add(new FileInputStream("2.txt"));
    13         vector.add(new FileInputStream("3.txt"));
    14         Enumeration<FileInputStream> en=vector.elements();
    15         SequenceInputStream ss=new SequenceInputStream(en);
    16         FileOutputStream fs=new FileOutputStream("4.txt");
    17         int len=0;
    18         byte[] buf=new byte[1024];
    19         while((len=ss.read(buf))!=-1){
    20             fs.write(buf, 0, len);
    21         }
    22         ss.close();
    23         fs.close();    
    24     }
    25 }

    2.运行效果

      

    3.分割

     1 import java.io.FileInputStream;
     2 import java.io.FileNotFoundException;
     3 import java.io.FileOutputStream;
     4 public class Test112 {
     5     public static void main(String[] args) throws Exception {
     6         FileInputStream fis =  new FileInputStream("u.jpg");
     7         FileOutputStream fos = null;
     8         byte[] buf = new byte[1024];
     9         int len = 0;
    10         int count = 1;
    11         while((len=fis.read(buf))!=-1)
    12         {
    13             fos = new FileOutputStream("part\"+(count++)+".part");
    14             fos.write(buf,0,len);
    15             fos.close();
    16         }
    17         fis.close();
    18     }
    19 }

    4.运行结果

      

    5.再进行合并

     1 import java.io.FileInputStream;
     2 import java.io.FileOutputStream;
     3 import java.io.IOException;
     4 import java.io.SequenceInputStream;
     5 import java.util.ArrayList;
     6 import java.util.Enumeration;
     7 import java.util.Iterator;
     8 
     9 public class Test113 {
    10     public static void main(String[] args) throws IOException {
    11         merge();
    12 
    13     }
    14     public static void merge()throws IOException
    15     {
    16         //将ArrayList转换成Enumeration
    17         ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();
    18         for(int x=1; x<=21; x++)
    19         {
    20             al.add(new FileInputStream("part\"+x+".part"));
    21         }
    22         //use final ,because anonymous function
    23         final Iterator<FileInputStream> it = al.iterator();
    24         Enumeration<FileInputStream> en = new Enumeration<FileInputStream>()
    25         {
    26             public boolean hasMoreElements()
    27             {
    28                 return it.hasNext();
    29             }
    30             public FileInputStream nextElement()
    31             {
    32                 return it.next();
    33             }
    34         };
    35 
    36         SequenceInputStream sis = new SequenceInputStream(en);
    37         FileOutputStream fos = new FileOutputStream("i.jpg");
    38         byte[] buf = new byte[1024];
    39         int len = 0;
    40         while((len=sis.read(buf))!=-1)
    41         {
    42             fos.write(buf,0,len);
    43         }
    44         fos.close();
    45         sis.close();
    46     }
    47 
    48 }
  • 相关阅读:
    解决UITableView中Cell重用机制导致内容出错的方法总结
    Hdu 1052 Tian Ji -- The Horse Racing
    Hdu 1009 FatMouse' Trade
    hdu 2037 今年暑假不AC
    hdu 1559 最大子矩阵
    hdu 1004 Let the Balloon Rise
    Hdu 1214 圆桌会议
    Hdu 1081 To The Max
    Hdu 2845 Beans
    Hdu 2955 Robberies 0/1背包
  • 原文地址:https://www.cnblogs.com/juncaoit/p/6856216.html
Copyright © 2011-2022 走看看