IO(1)

一、File类

 1.File类是java.io包中很重要的一个类

 2.File类的对象可以表示文件和目录(文件夹),在程序中一个File类对象可以代表一个文件或目录

 3.File对象可以对文件或目录的属性进行操作,如:文件名、最后修改日期、文件大小等

 4.File对象无法操作文件的具体数据,即不能直接对文件进行读/写操作

相对路径:不是全路径,是两个文件的相对同一个父级的路径

绝对路径:完整的路径

    

File类的构造方法:

File file = new File("D:/demo.txt");
File file1 = new File("D:/","demo.txt");

 File类的常用方法:

 方法实现:

package com.ffyc.javaio.file;

import java.io.File;
import java.io.IOException;
import java.util.Date;

public class FileDemo {
    public static void main(String[] args) {
        File file = new File("D:/demo2.txt");
        System.out.println(file.getAbsolutePath());//查找绝对路径
        System.out.println(file.getParent());//获得父级
        System.out.println(file.canRead());//文件是否可读
        System.out.println(file.canWrite());//文件是否可写
        System.out.println(file.length());//获取文件内容的长度(以字节为单位)
        System.out.println(file.lastModified());//获得文件最后的修改时间
        System.out.println(new Date(1657510749339l));//转换我们能看懂的时间
        System.out.println(file.exists());//文件是否存在
        if(!file.exists()){
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
                System.out.println("文件路径不合法");
            }
        }
        System.out.println(file.isFile());//判断表示的是否是文件
        System.out.println(file.isDirectory());//判断是否是文件夹(目录)
        System.out.println(file.delete());//删除成功是true,删除失败为false
        File file1 = new File("D:/demo3");
             file1.mkdir();//创建单级目录(文件夹)
        File file2 = new File("D:/demo1/deno2/demo3");
             file2.mkdirs();//创建多级目录(文件夹)
             file2.delete();//只能删除最底层的目录,必须为空才能删
        }
    }

比较重要的方法:list();和listFiles();

list()返回的是一个String类型数组,它只是一个数组,仅仅只是一个文件(文件夹)的名字而已;
而listFiles()方法返回的是一个File类的引用,它具有类的所有属性和方法
 

package com.ffyc.javaio.file;

import java.io.File;

public class FileDemo1 {
    public static void main(String[] args) {
        File f1 = new File("D:/ceshi");
           String []a = f1.list();//获得某个目录中所有的子集目录/文件,返回的是文件名
           for (String name : a){
               System.out.println(name);
           }
            File [] b = f1.listFiles();//获得某个目录中所有的子集目录/文件,返回对象(File)
           for (File f : b){
               System.out.println(f);
               f.delete();
           }
    }
}
package com.ffyc.javaio.file;

import java.io.File;
import java.io.FilenameFilter;

public class FileDemo1 {
    public static void main(String[] args) {
        File f1 = new File("D:/ceshi");
         /* f1.listFiles(new FilenameFilter() {
              @Override
              public boolean accept(File dir, String name) {
                  return false;
              }
          });//匿名类部类

          */
        
          File []fs = f1.listFiles(new MyFileFiler());
          for (File f : fs){
              System.out.println(f);
          }

    }
}
 //自己搞一个类:
/*
package com.ffyc.javaio.file;

import java.io.File;
import java.io.FilenameFilter;

public class MyFileFiler implements FilenameFilter {
    @Override
    public boolean accept(File dir, String name) {
        return name.endsWith("txt");
    }
}
 */

二、 输入及输出的概念

输入和输出是相对于程序的

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

三、输入流与输出流

IO流:

流--读写文件的操作类

类按照操作不同,单位不同分为:

(1)字节流  

      字节输入流:InputStream    read();

      字节输出流:OutputStream  write();

      每次读取数据时,是以字节为单位,一次读一个字节(可以读取任何文件)

(2)字符流  

      字符输入流:Reader    read();  

      字符输出流:Writer   write();

      每次读取数据时,是以字符为单位(只适合读文本文件,例.txt, .java,不能插图片,表格)

按照传出方向:

(1)输入流

       往程序中读叫输入流

(2)输出流

       从程序中往外写叫输出流

● InputStream和OutputStream的子类都是字节流 可以读写二进制文 件,主要处理音频、图片、歌曲、字节流,处理单元 为1个字节。

● Reader和Writer的子类都是字符流 主要处理字符或字符串,字符流处 理单元为1个字符。 字节流将读取到的字节数据,去指定的编码表中获取 对应文字

package com.ffyc.javaio.file;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class StreamDemo {
    public static void main(String[] args) throws IOException {

            FileInputStream f = new FileInputStream("C:/kms10.log");
            /*
            int a =0;
            while((a =f.read())!=-1){
                System.out.println(a);
            }
            */
        FileOutputStream f1 = new FileOutputStream("D:/demo1.txt");
            int a = 0;
            while((a =f.read())!=-1){
                 f1.write(a);
            }

    }
}

 完善:

package com.ffyc.javaio.file;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class StreamDemo1 {
    public static void main(String[] args) throws IOException {
        FileInputStream f1 = null;
        FileOutputStream f2 = null;
        try {
            f1 =  new FileInputStream("C:/kms10.log");
            f2 = new FileOutputStream("D:/demo2.txt");

            byte []a = new byte[100];
            int size = 0;
            while((size = f1.read(a))!=-1){
                f2.write(a,0,size);
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
            System.out.println(e.getMessage());
        }finally {
            if(f1!=null) {
                f1.close();
            }
            if(f2!=null){
                f2.close();
            }
            
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值