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 }
  • 相关阅读:
    分布式数据库数据一致性的原理、与技术实现方案
    分布式系统全局唯一ID简介、特点、5种生成方式
    分布式Session共享的4类技术方案,与优劣势比较
    深入理解分布式事务
    分布式事务的解决方案,以及原理、总结
    调研 | 5种分布式事务解决方案优缺点对比
    网页大文件上传支持断点上传
    WEB大文件上传支持断点上传
    http大文件上传支持断点上传
    B/S大文件上传支持断点上传
  • 原文地址:https://www.cnblogs.com/juncaoit/p/6856216.html
Copyright © 2011-2022 走看看