Java之I/O流(一)

一:流的概述
流是一组有序的数据序列,根据操作的类型可分为输入流和输出流两种。流提供了一种通道来将源(文件,网络,压缩包或其他数据源)中的的字节序列来送至目的地。java中定义了许多类来负责各种方式的输入输出,这些类都被放在java.io包中所有的输入类为抽象类InputStream或抽象类Reader的子类,所有输出类为抽象类OutPutStream或抽象类Writer类的子类。
(1)输入流:InputStream为字节输入流的抽象类,所有字节输入流的父类,该类的所有方法遇到错误都会引发IOException异常。
(2)输出流:是字节输出流的抽象类,是所有表示输出字节流的父类,该类的所有方法遇到错误都会引发IOException异常。
二:File类的概述:
File类是java.io包中唯一代表磁盘文件本身的对象。File类定义了与平台无管操作的方法来操作文件,通过调用File类的方法来实现创建,删除,重命名等操作。
1.文件的创建
(1)File(String pathname) ——————————–pathname指的是路径名称(包含文件名)例如:File file=new File(“D:\1.txt”);
(2)File(String parent,String child);parent为父路径字符串,child为子路径字符串
(3)File(File f,String child);
注意:File file=new File(“Word.txt”);
当前目录如果不存在名称为Word的文件的话,则可以调用createNewFile()方法来创建一个文件
举例:

public class Demo1 {
    public static void main(String[] args) {
        File file = new File("2.txt");
        if (file.exists()){
            file.delete();
            System.out.println("文件已删除");

        }else{
            try {
                file.createNewFile();
                System.out.println("文件已创建");
            }catch (Exception e){
                e.printStackTrace();
            }

        }
    }
}

结果:这里写图片描述
2.文件的删除
通过文件对象的delete()方法来删除文件。
3File类的常用方法:
.isexits();判断一个文件对象是否存在,并返回一个布尔值;
.isFile() ; 返回一个布尔值代表是否是文件;
.isDirectory(); 返回一个布尔值代表是否是目录;
File 可以用来代表不存在的目录或文件:;
.mkdir() 来创建一个目录;
.mkdirs() 可以用来创建多级目录;
.listFiles() 得到一个目录下的所有子目录和文件;
举例:

public class Demo2 {
    public static void main(String[] args) throws IOException {
        File file = new File("D:\\1.txt");
        file.mkdir();
        File f2 =new File("c:\\abc","2.txt");
        f2.mkdirs();
        File file1 = new File("D:\\k\\e");
        file1.mkdirs();
        System.out.println(file.isDirectory());//判断是否为目录
        System.out.println(file.exists());//判断文件夹
        System.out.println(file.isFile());//判断是否为文件

    }
}

结果:这里写图片描述
举例:对一个File对象进行遍历和对对象的过滤
代码:

public class Demo4 {
    public static void main(String[] args) {
        File file = new File("D:\\Intelli IDEA");
        File[] listFiles = file.listFiles();
        for(File i:listFiles){
            System.out.println(i);//遍历文件夹中的文件
        }
        System.out.println("----------------");
        //过滤
        File[] files = file.listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                if (name.startsWith("M")) {
                    return true;
                } else {
                    return false;
                }
            }


        });
        for (File s:files){
            System.out.println(s);
        }
    }
}

结果:这里写图片描述
三:I/O流
1:概述:Input:如果我对一个一个文件进行读取,那么这个文件对于我来说就是输入流:Output:如果我对一个 文件进行写入内容那么这个文件对于我来说就是输出流
2:字节流的介绍
2.1.1字节流顾名思义就是以字节为单位进行输入输出操作
2.1.2字节输入流的抽象类为InputStream,它的子类为FileInputStream
2.1.3字节输出流的抽象类为OutStream,它的子类为FileOutputStream
举例;对一个文件的读取:

public class Demo3 {
    public static void main(String[] args)throws IOException {
        FileInputStream fis = new FileInputStream(new File("D:\\Intelli IDEA\\MyprojectDemo20180810\\src\\1.txt.txt"));
       while(true){
           int read = fis.read();
           if(read==-1){
               break;
           }
           System.out.println((char)read);
       }
       file.close();
    }
}

结果:
这里写图片描述
2.1.4输出流的举例:
代码:

public class OutPutStream {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream(new File("2.txt"));
        fos.write(97);
        fos.write(98);
        fos.write(105);
        fos.close();
    }
}

结果:这里写图片描述
举例:文件之间的赋值:
代码:

public class Copy {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("F:\\java知识\\第十七天\\作业\\test.txt"),"gbk"));
        PrintWriter writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream("3.txt"), "utf-8"));
        while(true){
            String s = reader.readLine();
            if(s==null){
                break;
            }
            writer.write(s);
            writer.println();
        }
        reader.close();
        writer.close();
    }
}

结果:
源文件:这里写图片描述
复制原来的文件:这里写图片描述
3.字符流的介绍
3.1字符流的概述:(以字符为处理单位)
3.2字符输入流为Reader InputStreamReader可以将字节输入流转换为字符输入流
字符输出流为Writer OutputStreamWriter可以将字节输出流转换为字符输出流
与以上同等级的类有BufferedReader和BufferedWriter
举例:
读取一个文件里的内容
代码:

public class Demo4 {
    public static void main(String[] args)throws IOException {
        InputStreamReader reader = new InputStreamReader(new FileInputStream("2.txt"));
        while(true){
           int s=reader.read();
           if(s==-1){
               break;
           }
            System.out.println((char)s);
        }
    }
}

结果:
这里写图片描述
写入一个文件:

public class Demo5 {
    public static void main(String[] args)throws IOException {
        //
        OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("5.txt"), "utf-8");
        writer.write("爱我中华");
        writer.write("我爱中华");
        writer.close();
    }
}

结果:这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40843624/article/details/81570996