IO流知识总结1

文件可认为是相关记录或放在一起的数据的集合。
JAVA通过File类来访问文件属性

File类的常用方法

boolean exists( )     判断文件或目录是否存在
boolean isFile( )     判断是否是文件
boolean isDirectory( )    判断是否是目录
String getPath( )    返回此对象表示的文件的相对路径名
String getAbsolutePath( )    返回此对象表示的文件的绝对路径名
String getName( )    返回此对象表示的文件或目录的名称
boolean delete( )    删除此对象指定的文件或目录
boolean createNewFile( )      创建名称的空文件,不创建文件夹
long length()     返回文件的长度,单位为字节, 如果文件不 存在,则返回 0L
案例:
 public static void main(String[] args) throws IOException {
        //File  是文件和目录径名的抽象表示
        //文件和目录是可以通过File封装成对象的     封装的并不是真正的文件,是路径名而已、可以存在,也可以不存在。
        //将来是要通过具体的操作吧这个路径的内容转化为具体存在的
        // String pathname    通过给定的路径名字付串转化为抽象路径名来创建新的File实例
        File file=new File("D:\\JAVA\\itcast\\java.txt");
        System.out.println(file);
        File file1=new File("D:\\JAVA\\itcast","java.txt");
        System.out.println(file1);
        File file2=new File("D:\\JAVA\\itcast");
        File file3=new File(file2,"java.txt");
        System.out.println(file3);

        //File类的创建功能
        //  创建会显示true,创建过后再次输出的话会输出false        返回的是boolean类型      创建了文件java.txt
        //createNewFile  方法
        File file4=new File("D:\\JAVA\\itcast\\java.txt");
        System.out.println(file4.createNewFile());

        //  创建会显示true,创建过后再次输出的话会输出false        返回的是boolean类型      创建目录 javaSE
        //mkdir 方法
        File file5=new File("D:\\JAVA\\itcast\\JavaSE");
        System.out.println(file5.mkdir());


        //  创建会显示true,创建过后再次输出的话会输出false        返回的是boolean类型      创建目录 javaSE
        //mkdirs  创建多级目录
        File file6=new File("D:\\JAVA\\itcast\\JavaSEE\\javasee");
        System.out.println(file6.mkdirs());

        //  创建会显示true,创建过后再次输出的话会输出false        返回的是boolean类型      创建目录 javaSE
        //注意路径的是文件,还是目录  ,不管是目录还是文件都只能存在一个名字一样的
        File file7=new File("D:\\JAVA\\itcast\\Javasess.txt");
        System.out.println(file7.createNewFile());


        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

        //判断和获取方法
        //isDirectory  File是否为目录   ;  isFile是否为文件     ;      exists   File是否存在
        File file8=new File("D:\\JAVA\\itcast\\java1.txt");
        System.out.println(file8.isDirectory()); //false
        System.out.println(file8.isFile());   //true
        System.out.println(file8.exists());   //true
        //getAbsolutePath  返回此抽象路径的绝对路径字符串 ;getPath  返回创建Flile对象时的路径 ;getName   返回此抽线路径表示的文件或者目录名称
        System.out.println(file8.getAbsolutePath());
        System.out.println(file8.getPath());   //输出文件名称
        System.out.println(file8.getName());//文件名       java1.txt

        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

        //oubic String [] list显示路径表示的目录中的文件和目录的名称字符串数组
        //
        File file9=new File("D:\\JAVA\\itcast");
        String[] strArray = file9.list();   //ctrl+alt+v  补全的代码
        for (String str:strArray){
            System.out.println(str);
        }

        System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
        File[] fileArray = file9.listFiles();
        for (File file01:fileArray){
//            System.out.println(file01);//返回绝对路径
//            System.out.println(file1.getName());//返回路径文件和目录的名称和上方的String[]list方法返回的是一样的东西。但是这个可以加判断
            if (file01.isFile()){  //只要文件   换成isFile 只返回文件   isDirectory 只返回目录名称
                System.out.println(file01.getName());
            }
        }
        //绝对路径是完整路径,相对流经是不完整的
        //\\itcast\\java.txt   会在项目中创建一个文件或者目录
        //目录中有内容时,不能直接删除,先删除目录里面的目录或者文件,才可以删除




    }

流的基本概念

通过流来读写文件 : 流是指一连串流动的字符,是以先进先出方式发
源数据源------》读到程序   :这种是输入流
程序写道------》目标数据源 : 这是输出流
JAVA流的分类
按流向区分 分为两种   1、inputstream 和 reader作为基类  :输入流
                                     2、outputstream 和 writer作为基类: 输出流
输入输出流是相对于计算机内存来说的 , 而不是相对于源和目标。
按处理数据单元分类分为:字节流分为两种  1、字节流输入流 inputstream为基类
                                                                       2、字节流输出流 outputstream 为基类
                                            字符流分为两种 1、字符流输入流reader为基类
                                                                       2、字符流输出流writer为基类
字节流是 8 位通用字节流,字符流是 16 Unicode 字符流。

流的分类

功能不同
1、节点流:可以直接从数据源或目的地读写数据。
2、处理流(包装流):不直接连接到数据源或目的地,是其他流进行封装。目的主要是简化操作
和提高性能。
节点流和处理流的关系
1、节点流处于io操作的第一线,所有操作必须通过他们进行
2、处理流可以对其他流进行处理(提高效率或操作灵活性)

文件的读写

文本文件的读写
 用FileInputStream和FileOutputStream读写文本文件
 用BufferedReader和BufferedWriter读写文本文件
 二进制文件的读写使用DataInputStream和DataOutputStream读写二进制文件以及基本数据类型
数据的读写
对象的读写
使用ObjectInputStream和ObjectOutputStream读写对象(序列 化与反序列化)

使用FileInputStream 读文本文件顺序

1、引入相关的类
2、 构造文件输入流 FileInputStream 对象
3、 读取文本文件的数据
4、关闭文件流对象
InputStream类常用方法
int read( )
 int read(byte[] b)
 int read(byte[] b,int off,int len)
 void close( )
 int available()
子类FileInputStream常用的构造方法
 FileInputStream(File file)
 FileInputStream(String name)
案列:
public static void main(String[] args) {
        File file=new File("c:\\1.txt");
        FileInputStream fis=null;
        try {
            fis=new FileInputStream(file);
             int length=0;
             while ((length=fis.read())!=-1){
                 System.out.println(length);
             }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                fis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

使用FileOutputStream 写文本文件的顺序

1、引入相关的类
2、构造文件数据
3、流输出对象
4、将数据写入文本文件
5、关闭文件流
6、对象
OutputStream类常用方法
 void write(int c)
 void write(byte[] buf)
 void write(byte[] b,int off,int len)
 void close( )
子类FileOutputStream常用的构造方法
 FileOutputStream (File file)
 FileOutputStream(String name)
 FileOutputStream(String name,boolean append)
1 、前两种构造方法在向文件写数据时将覆盖文件中原有的内容
2 、创建 FileOutputStream 实例时,如果相应的文件并不存在,则会自动创建一个
空的文件
案例:
 public static void main(String[] args) throws IOException {
      
     
        FileOutputStream f1=null;
        try {
             f1=new FileOutputStream("D:\\JAVA\\itcast\\Fzhang.txt",true);
            f1.write("zhang".getBytes());
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            if (f1!=null){
                try {
                    f1.close();
                }catch(IOException e) {
                    e.printStackTrace();
                }

            }
        }


        //最后要释放资源     void close关闭文件输出并释放与此流相关联的任何系统资源
        f1.close();


    }
public static void main(String[] args) throws IOException {
      
     
        FileOutputStream f1=null;
        try {
             f1=new FileOutputStream("D:\\JAVA\\itcast\\Fzhang.txt");
              byte[] a = "zhang".getBytes();
              f1.write(a);
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            if (f1!=null){
                try {
                    f1.close();
                }catch(IOException e) {
                    e.printStackTrace();
                }

            }
        }


        //最后要释放资源     void close关闭文件输出并释放与此流相关联的任何系统资源
        f1.close();


    }

复制图片

案例:

private static void methon4(File srcFile, File desFile) throws IOException {

  File srcFile = new File("E:\\流浪地球.jpg");

  File desFile = new File("C:\\流浪地球.jpg");

  // 封装数据源

  FileInputStream fi = new FileInputStream(srcFile);

  //封装目的地

  FileOutputStream fw = new FileOutputStream(desFile);
  
  //复制
  int by = 0;

  while((by = fi.read()) != -1) {

   fw.write(by);

  }
  
  //释放资源

  fi.close();

  fw.close();
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值