柘明Java笔记18

第八章 IO

File类

File类是java.io包中很重要的一个类: 1.File类的对象可以表示文件,还可以表示目录,在程序中一个File类对象可以代表一个文件或目录; 2.File对象可以对文件或目录的属性进行操作,如:文件名、最后修改日期、文件大小等; 3.File对象无法操作文件的具体数据,即不能直接对文件进行读/写操作。 File类的常用方法:

 /*       File类  在程序中抽象的表示计算机中的文件和目录(文件夹).
               一个Flie类的对象可以表示一个具体的文件或目录
               File类的对象只表示文件,不能对文件内容进行读写操作
​
               E:/demo1.txt  绝对路径  完整的路径
               a.txt         相对路径  不是全路径,是两个文件的相对同一个父级的路径 */
 public static void main(String[] args) {
        //File类构造方法
        /*File f1 =   new File("E:/demo1.txt");
        File f2 =   new File("a.txt");*/
       /* String p = "E:/";
        new File(p, "demo.txt");
        new File(p, "demo1.txt");
        new File(p, "demo2.txt");*/
        File f1 =   new File("E:/demo2.txt");
        System.out.println(f1.getAbsolutePath());//绝对路径
        System.out.println(f1.getParent());//父级
        System.out.println(f1.lastModified());//文件最后修改时间
        System.out.println(new Date(1657499754415L));
        System.out.println(f1.length());//获取文件内容长度(以字节为单位)
        System.out.println(f1.canRead());//判断文件是否可读
        System.out.println(f1.canWrite());//判断文件是否可写
        System.out.println(f1.exists());//判断文件是否存储
        if(!f1.exists()){
            try {
                f1.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
                System.out.println("文件路径不合法");//异常处理
            }
        }
        System.out.println(f1.isFile());//判断表示的是否是文件
        System.out.println(f1.isDirectory());//判断表示的是否是目录
        System.out.println(f1.delete());
        File f2 = new File("E:/demo");
             f2.mkdir();//只能创建单级目录
        File f3 = new File("E:/demo1/demo2");
             f3.mkdirs();//可以创建多级目录
             //f3.delete();//删除目录时,目录中必须为空     
          File f1 =   new File("E:/api");
            File[] fs =  f1.listFiles(new MyFileFilter());
           for (File f : fs){
               System.out.println(f);           }        }

输入及输出的概念

● 输入输出(I/O) 把电脑硬盘上的数据读到程序中,称为输入,即input,进行数据 的read 操作从程序往外部设备写数据,称为输出,即output,进行数据的write 操作

字节流与字符流

流:读写文件的操作类,类按操作不同分为: 字节流:每次读取数据时,是以字节为单位,一次读取一个字节,(可读取任何文件) 字节输入流 FileInputStream 字节输出流 FileOutputStream

字符流:每次读取数据时,是以字符为单位,一次读取一个字符,(只适合读文本文件) 字符输入流 FileReader 字符输出流 FileWrite

输入流与输出流

流按着数据的传输方向分为: 输入流:往程序中读叫输入流。 输出流:从程序中往外写叫输出流。 InputStream和OutputStream的子类都是字节流,可以读写二进制文件,主要处理音频、图片、歌曲、字节流,处理单元为1个字节。 Reader和Writer的子类都是字符流 主要处理字符或字符串,字符流处理单元为1个字符.字节流将读取到的字节数据,去指定的编码表中获取对应文字。

输入输出字节流

public static void main(String[] args) throws IOException {
        FileInputStream in = null;
        FileOutputStream out = null;
        try {
             in =  new FileInputStream("E:/demo1.txt");
             out = new FileOutputStream("E:/demo2.txt");
 // in.read(); 一次读一个字节,返回字节编码(int), 文件内容读完后返回-1.
 // in.read(byte [] b); 一次可以读一个byte数组个字节,返回的是数组实际装入了多少个内容,文件内容读完后返回-1.
                byte[] b = new byte[5];//[102,98,99,100,101]
                int size = 0;
                while((size = in.read(b))!=-1){
                    System.out.println(size);
                    out.write(b,0,size);
      //write(int b); 一次向目标文件写出一个字节
     //out.write(b,0,size); 一次向目标文件写出一个byte数组,从数组指定位置开始,写出size个字节
                }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            System.out.println(e.getMessage());//日志记录
        }finally {
               if(in!=null){
                   in.close();//关闭流通道 释放文件
               }
               if(out!=null){
                   out.close();
               }
        }}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值