文件流

文件:
     本质:一组数据的集合;
     目录:是特殊的文件,文件和目录;
    一组数据集合---文件(二进制,字节流)
   目录也是特殊的文件:包含文件和目录。
   文件的本质:数据的集合
   文件的本质:路径的抽象。
               String pathname="D:\\x\\1.txt";
               new File(pathname);
 
2、文件存储在什么地方?
   内存,硬盘,磁盘,光盘等存储介质中。
 
3、怎么创建?
   new File();-----构造器
   new File("D:\\X\\1.txt");
   new File("D:\\x\\","1.txt");
   new File(new File("D:\\x\\"),"1.txt");
   new File(URL);
   new File();
   注意点:主要关注的是File的属性,而不是File中的内容。
           凡是和数据的传输,读写有关的都需要使用到
           输入流和输出流。
 
4、怎么使用?
   文件过滤器:.doc..txt.文件,目录。
   FilenameFilter
   extends,implements-----
   深度优先遍历
       核心:从做向右。
 
   广度优点遍历
       核心:层级遍历。
 
5、流:
   为了传输数据。
   流是让物体流花的工具。
   将文件以流的形式在网络中传输。
   可以使物体的形态变化。
   输入流和输出流:没有方向,程序而言。
   读----输入流,写-----输出流
   字节流:InputStream    OutputStream
   字符流:Reader         Writer
   注意:两个字节等于一个汉字。
   汉:(7489275  5432589)字符流。
   缓冲流,处理流,节点流。。。。 
     路径(文件/目录) File
 
 File f1 = new File ("c:\\aa\\1.txt");      //查询一个文件路径
====File f1 = new File("c:\\aa\\","1.txt");
     System,out.println(f1.length());
 
 
File f1 = new Filre ("c:\\aa\\1.txt");
try{
file.createNewFile();        //创建一个文件
catch(IOException e){
     e.printStrackTrace;
}
 
 
//创建临时文件
 
File file1 = file.createTempFile("112312",".txt"new File("c:\\aa"));
file1.deleteOnExit();     //jvm关闭临时文件
while(true){     //死循环
 
}
 
 
//通过静态方法得到所有盘符信息
File []listfile = File.listRoots();
for(File l:listfile){
     System.out.printil(l);
}
 
//判断是不是文件夹,是不是目录,是否为空,相对路径,绝对路径
        file.isFile();
        file.isDirectory();
        file.exists();
        file.getAbsolutePath();       
        file.getParentFile(); 
 
//文件过滤器
public class Test {
     File f1 = new Filre ("c:\\aa");
     public static void main(String[] args) throws IOException {
        String[] file3=file.list((FilenameFilter) new MyFileNameFilter());
        for (String f:file3) {
            System.out.println(f);   
        }
        file.delete();       
    }
}
 
class MyFileNameFilter implements FilenameFilter{
 
    public boolean accept(File dir, String name) {
        return name.endsWith(".wps");
    }
}
 
//删除文件
file.delete();
 
 
 
 
 
 
     public static void main(String[] args) {
           File f1 = new File("c:\\aa");
           String[] filearr = f1.list();    //只得到文件的名称
           for (String f : filearr) {
                System.out.println(f);
           }
     }
 
 
//深度优先遍历
public static void deep(File dir){
     System.out.println("------>"+dir.getName());
     if(dir.isFile()){   
         return;
     }else{
    File[]fs = dir.listFiles();   //listFiles子文件   File数组接收  dir是文件的缩写
     if(fs!= null&&fs.length>0){
              for(File f : fs){
                    deep(f);
               }
          }
          }
     }
public static void main(String[] args) {
File f1 = new Filre ("c:\\aa\\1");
     deep(f1);
}
 
队列:Queue
 
//广度优先遍历
public static void width(File dir){
     //1.创建队列
     Queue<File> qu = new LinkedList<File>();
     //2.根元素入队
     qu.offer(dir);
 
     while(!qu.isEmpty()){
          //3.队首元素出队
             File file3=qu.poll();
             if(file3.isFile()){
                 System.out.println("=======这个是文件======="+file3.getName());
             }else{
                 System.out.println("=============这个是目录============="+file3.getName());
                 File [] file4=file3.listFiles();
                 for(File f:file4){
                     //4.入队,但是必须等待前一个任务结束,才能出队
                     qu.offer(f);
                 }
          }
     }
 }
 
public static void main(String[] args) {
File f1 = new Filre ("c:\\aa\\1");
     width(f1);
}
 
 
 
 

 
流:
     传输方式   
 
  1.     输入流和输出流:
  2.    inputStream,outputStream:字节流
  3.    reader,writer:字符流
  4.    4877646  4864646=汤
  5.    流本身没有方向。
 
 
public class Test03 {
     //字符流是16位的unicode编码集
   
   public static void main(String[] args) {
           File  src=new File("c:\\aa\\123.avi");
           File  target=new File("c:\\aa\\a\\1.avi");
        try {
           InputStream  in = new BufferedInputStream(new FileInputStream(src),1024);  
            OutputStream  out = new BufferedOutputStream(new FileOutputStream(target),1024);
            int temp = -1;
            while((temp=in.read())!=-1){
               out.write(temp);
            }
//            while((in.read(b))!=-1){
//               out.write(b);
//            }
            out.flush();
            out.close();
            in.close();
           } catch (Exception e) {
                e.printStackTrace();
           }
     }
 
 
public class Test3 {
    public static void main(String[] args) {
        //字符流是16位的unicode编码集
        //案例1:得到文本中的数据
        try {
            File file=new File("C:\\a\\1.txt");
            //创建字节流
                //字节输入流用于读文本文件
            InputStream is=new FileInputStream(file);     
            //创建字符流
            // 字节输出流向文本文件写输出流
            Reader reader=new  InputStreamReader(is);           
            int temp=-1;
            while((temp=reader.read())!=-1){
                System.out.print((char)temp);
            }
        } catch (Exception e) {
            // TODO: handle exception
        }
    }
}
 
 
 
     字符流;
               Reader
               Writer
 
public class Test4 {
    public static void main(String[] args) throws IOException,SQLException {
        //字符流是16位的unicode编码集
        //案例1:得到文本中的数据
            File file=new File("C:\\a\\1.txt");
            //创建字节流
            OutputStream os=new FileOutputStream(file);
            //创建字符流
            Writer writer=new OutputStreamWriter(os);
            String s="花开花谢花满天,红袖想笑有谁怜!";
            writer.write(s);
            //强制提交
            writer.flush();
            //释放资源
            writer.close();
            os.close();
     }
}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2016-09-25 23:05  AugustTwenty  阅读(245)  评论(0编辑  收藏  举报