JAVA 21 IO File Properties

File:文件类,操作文件夹,文件的属性信息。
创建对象举例“
File f1=new File("c:\\abc\\a.txt"); 字符串可以为变量
File f2 = new File("c:\\abc","a.xtx");指定目录名和文件名称
 
File d = new File("c:\\abc")
File f3 = new File(d,"a.txt"); 变量形式。
 
目录分隔符的跨平台形式
File f4 = new File("c:"+File.separator+"abc"+File.separator+"abc.txt" ;
 
File类常见方法:
1,创建
    bollean creatNewFile(); //在指定位置创建文件,如果文件已经存在,则不创建。返回
false,和输出流不一样,输出流一建立就会创建文件。而且会覆盖。
    mkdir();//创建目录,只能创建一级目录
    mkdirs(); //可以创建多及目录
2,删除
    boolean delate();
    void dealteOnExit();//退出的时候删除。
3,判断
    boolean canExcute();//是否可执行
    canRead()
    canWrite()
    exists()
    isFile()//判断文件是否是文件或目录时,必须先判断该文件对象封装的内容是否存在,通过exists().c
    isHidden()
    isDirectory()
    isAbsolute()
    int compareTo()
 
4,获取文件信息
    String 
    getName()
    getPath()
    getParent()
    long lastModified() ;最后修改时间
    long lenth()
    boolean renameTo(File)//移动文件
5,其它
    列出盘符
    File [] f =File.listRoots();
      for(File p:f)
      {
       sop(p);
      }
 
    String [] list();//返回指定目录下文件或者文件夹名称
    
    文件过滤器
    String[] list(FilenameFilter f);//返回指定格式的文件名数组   
 
File f1=new File("C:\\Users\\zx\\Desktop");
  String name [] =f1.list(new FilenameFilter()
  {
   public boolean accept(File dir,String n)//dir 和name 是文件对象的目录和所有文件名
   {
    return n.endsWith(".o");
   }
  });
  sop(name.length);
 
 
    File[] listFiles();与上面相同,不过返回文件对象数组。也可以使用过滤器。
 
 
Properties是hashtable的子类
 
它具备map集合的特点,而且里面存储的键值对都是字符串,不需要泛型
是集合中io技术相结合的集合容器。
该对象的特点:可以用于键值对形式的配置文件,可以操作硬盘上上的键值对。
 
String getProperty(String key)//返回值
Object setProperty(String key,String value)//修改值/设置值
list(PrintStream out) //将属性列表指定到输出流。
load(Reader reader)//与流相结合
store(OutputStream,String 注释信息)
Set<String> stringPropertyNames()//返回键集
 
打印流PrintStream PrintWriter
 
字节打印流和字符打印流。
是Stream 和 Writer的子类。
 
PrintStream
构造函数可以接收的参数类型:
1,file对象 File
2,字符串路径 String
3,字符数出流 OutputStream
 
PrintWriter
可以接受各种流。
1,file对象 File
2,字符串路径 String,文件名路径。
3,字符数出流 OutputStream
4,多一个字符输出流 Writer
 
主要方法,除了OutputStream的方法外,还有
print
println方法,而且可以保证数据的原样性
 
合并流SequenceInputStream,直接举例应用
 
切割流Split,切割一个文件变成三个文件为例,没有新对象。
 
 
 
 
举例应用,列出所有目录:递归
import java.io.*;
import java.util.*;
 
public class Test {
 
 public static void main(String[] args) throws IOException
 {
  File f= new File("e:\\百度云同步盘");
  showDir(f);
 }
 
 public static void showDir(File dir)
 {
  File [] files = dir.listFiles();
  for(int x=0;x<files.length;x++)
  {
   if(files[x].isDirectory())
   {
    showDir(files[x]);
   }
   else
   {
    sop(files[x]);
   }
  }
 }
 public static void sop(Object o)
 {
  System.out.println(o);
 }
 
}
 
把所有.java文件目录存储到文件中
 
import java.io.*;
import java.util.*;
 
public class Test {
 
 public static void main(String[] args) throws IOException
 {
  File f= new File("e:\\百度云同步盘");
  FileWriter fw = new FileWriter("C:\\Users\\zx\\Desktop\\File.txt");
  BufferedWriter bw = new BufferedWriter(fw);
  showDir(f,bw);
  bw.close();
  sop("end");
 }
 
 public static void showDir(File dir,BufferedWriter bw) throws IOException
 {
  File [] files = dir.listFiles();
  for(int x=0;x<files.length;x++)
  {
   if(files[x].isDirectory())
   {
    showDir(files[x],bw);
   }
   else
   {
    if(files[x].toString().endsWith(".java"))
    {
     bw.write(files[x].toString());
     sop(files[x].toString());
     bw.newLine();
     bw.flush();
    }
   
   
   
   
   }
  }
 }
 
 public static void sop(Object o)
 {
  System.out.println(o);
 }
 
}
 
Properties 应用
 
import java.io.*;
import java.util.*;
 
public class Test {
 
 public static void main(String[] args) throws IOException
 {
  Properties pop = new Properties();
  pop.load(new FileReader("C:\\Users\\zx\\Desktop\\File.txt")); //从文件中加载信息
  sop(pop);
  pop.setProperty("zhanghaijun","88"); //修改map集合
  pop.store(new FileOutputStream("C:\\Users\\zx\\Desktop\\File.txt"), null); //将新集合写入到文件中
  sop(pop);
 }
 public static void sop(Object o)
 {
  System.out.println(o);
 }
}
 
 
限制程序使用次数。
import java.io.*;
import java.util.*;
 
public class Test {
 
 public static void main(String[] args) throws IOException
 {
  Properties pop = new Properties();
  pop.load(new FileReader("C:\\Users\\zx\\Desktop\\File.txt"));
 
  String s =pop.getProperty("times");
  int a = Integer.parseInt(s);
  if(a>=10)
   sop("不可以用了");
   else
   {
    sop("已经使用"+a+"次");
    pop.setProperty("times", a+1+"");
    pop.store(new FileOutputStream("C:\\Users\\zx\\Desktop\\File.txt"), null);
   }
 
 
 }
 public static void sop(Object o)
 {
  System.out.println(o);
 }
}
 
PrintWriter举例应用
import java.io.*;
import java.util.*;
 
public class Test {
 
 public static void main(String[] args) throws IOException
 {
  BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
  PrintWriter out = new PrintWriter(System.out ,true); //如果设置为true,则自动刷新。
  String line = null;
  while((line = buf.readLine())!=null)
  {
   out.println(line);
   out.flush();
  }
 }
 public static void sop(Object o)
 {
  System.out.println(o);
 }
}
 
SequenceInputStream 合并流
举例应用
import java.io.*;
import java.util.*;
 
public class Test {
 
 public static void main(String[] args) throws IOException
 {
  FileInputStream f1 = new FileInputStream("C:\\Users\\zx\\Desktop\\1.txt");
  FileInputStream f2 = new FileInputStream("C:\\Users\\zx\\Desktop\\2.txt");
  FileInputStream f3 = new FileInputStream("C:\\Users\\zx\\Desktop\\3.txt");
  FileOutputStream f4 = new FileOutputStream("C:\\Users\\zx\\Desktop\\4.txt");
  Vector<FileInputStream> v = new Vector<FileInputStream>();
  v.add(f1);
  v.add(f2);
  v.add(f3);
 
  Enumeration<FileInputStream> en = v.elements();
  SequenceInputStream sis = new SequenceInputStream(en);
  byte [] by =new byte [1024];
  int len;
  while((len=sis.read(by))!=-1)
  {
   f4.write(by,0,len);
   f4.flush();
   
  }
  sis.close();
  f4.close();
 
 }
 public static void sop(Object o)
 {
  System.out.println(o);
 }
}


 
posted @ 2015-09-30 16:47  hitz&x  阅读(115)  评论(0编辑  收藏  举报