File类 和 io流

File

.小知识

         .绝对路径---有盘符,相对路径---无盘符(这个相对的意思:默认情况下,Java.io包中的类总是根据当前用户目录来解析性对路径名。此目录由user.dir确定,通常是java虚拟机的调用位置。)

.方法

       举例

package com.zx.test1;

 

import java.io.File;

importjava.io.IOException;

 

publicclass T1 {

   publicstatic void main(String[]args) {

      /*在该路径下创建一个文件/或者\都可以.

       *Linux中,只能用/

       *windows中,都可以。而\也是转义字符,故需要\\

      */

//    File file=new File("C:\\Users\\Administrator\\Desktop\\1.txt");

      File file=new File("C:/Users/Administrator/Desktop/1.txt");

     

/*      如果文件存在,打印成功;文件不存在,创建它

         *exists()判断文件是否存在

         

        if(file.exists()){

            System.out.println("文件已经存在");

        }else{

            try {

                file.createNewFile();

                System.out.println("文件创建成功");

               

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

        file.delete();

        System.out.println("文件删除成功");

        //isDirectory()判断文件是否为文件夹(文件夹即是目录的意思)

        System.out.println(file.isDirectory());*/

        file.mkdir();

        System.out.println("文件夹创建成功");//在该路径下的同名文件不存在时,建立同样的文件夹

    }

}

                            Io

一.相关概念

    1.流:数据传输和交换的载体

    2.分类:

        &&按处理数据类型:字节流(8位二进制),字符流(16位二进制)

        &&按数据流的方向:输入流(数据进入内存)输出流(从内存中输出数据)

        &&按处理数据类型:节点流,处理流

二.案例

1.package com.zx.test1;

import java.io.File;

importjava.io.FileInputStream;

importjava.io.FileNotFoundException;

importjava.io.IOException;

/*

 * 将文件中的数据输入内存中

 */

publicclass T1 {

      publicstatic void main(String[]args) {

           File file=new File("1.txt");

           FileInputStream fis=null;//为了方便关闭fis,故刚开始设为null

           try {

                

                 fis=new FileInputStream(file);

                 byte[]b=newbyte[fis.available()];//因为fis.read(参数为字节型)

                 fis.read(b);

                 String str=new String(b);//为了判断是否读入内存中去了

                 System.out.println(str.toString());

                

           } catch (FileNotFoundExceptione) {

                 e.printStackTrace();

           } catch (IOExceptione) {

                 e.printStackTrace();

           }finally{

                 if(fis!=null){

                      try {

                            fis.close();

                      } catch (IOExceptione) {

                            e.printStackTrace();

                      }

                 }

           }

      }

}

2.

publicclass T1 {

      publicstatic void main(String[]args) {

           String str="世界这么苦,找个人一起受苦吧";

           File file=new File("1.txt");

           FileOutputStream fos=null;//为了方便关闭fos,故刚开始设为null

           try {

                 /*

                  *fos=new FileOutputStream(file,false);替换

                  */

                 fos=newFileOutputStream(file,true);//追加。

                 fos.write(str.getBytes());//把数据一起写入文件

                 System.out.println("文件写入成功");

                

           } catch (FileNotFoundExceptione) {

                 e.printStackTrace();

           } catch (IOExceptione) {

                 e.printStackTrace();

           }finally{

                 if(fos!=null){

                      try {

                            fos.close();

                      } catch (IOExceptione) {

                            e.printStackTrace();

                      }

                 }

           }

      }

}

3.

publicclass Task2 {

       publicstatic void main(String[]args) {

              Print p=new Print();

              //从文件1复制粘贴到文件2

              File oldFile=new File("1.txt");

              File newFile=new File("2.txt");

              p.IOFile(oldFile,newFile);

             

             

       }

}

class Print{

       publicstatic void IOFile(FileoldFile,File newFile){

              /*

               *判断文件是否存在  

               *       :判旧文件是否为空

               */

              if(oldFile.exists()&&newFile.exists()){

                     String str=getDate(oldFile);

                     if(str.equals(" ")){

                            System.out.println("文件是空文件");

                     }else{

                            //把读取到的内容写到新文件中

                            setDate(str,newFile);

                     }

              }else{

                     System.out.println("文件不存在");

              }

       }

       //从旧文件中读取文件,输入:到内存中 读取文件

       publicstatic StringgetDate(File oldFile){

              String  InFo=" ";

              FileInputStream fis=null;

              try {

                    

                     fis=new FileInputStream(oldFile);

                     byte[]b=newbyte[fis.available()];

                     fis.read(b);

                     InFo=new String(b);//??????????????????????????

                     System.out.println("读取成功");

                    

              } catch (FileNotFoundExceptione) {

                     e.printStackTrace();

              } catch (IOExceptione) {

                     e.printStackTrace();

              }finally{

                     if(fis!=null){

                            try {

                                   fis.close();

                            } catch (IOException e) {

                                   e.printStackTrace();

                            }

                     }

              }

             

              returnInFo;

       }

       //输入到新文件。输出,从内存中出去,写

       publicstatic void setDate(Stringstr,File newFile){

              FileOutputStream fos=null;

              try {

                    

                     fos=newFileOutputStream(newFile);

                     fos.write(str.getBytes());//?????????

                     fos.flush();

                     System.out.println("写入新文件成功");

                    

              } catch (FileNotFoundExceptione) {

                     e.printStackTrace();

              } catch (IOExceptione) {

                     e.printStackTrace();

              }finally{

                     if(fos!=null){

                            try {

                                   fos.close();

                            } catch (IOException e) {

                                   e.printStackTrace();

                            }

                     }

              }

             

       }

}

四:字符流

输出字符流

输入字符流

问题1.为什么先关闭缓冲流再关闭字节流?

因为缓冲流是基于字节流的,缓冲流位于JVM中,先把字节存到自己里面再通过字节流到文件的东西

2.为什么写入时要刷新?

因为需要把缓冲流的东西写入文件

猜你喜欢

转载自blog.csdn.net/qq_39156616/article/details/75453737