Java之IO流

2021-03-06 23:31

阅读:395

标签:src   http   trace   class   catch   概述   读取txt   abs   creat   

1.File类

1.1定义

是文件和目录路径名的抽象表示形式,Java中把文件或者目录都封装成File对象。创建File时不会在文件系统创建文件。

1.2构造函数

1)File(String pathname) 

将一个字符串路径封装成File对象。

File file=new File("D:\\Java\\1.txt");

2)File(String parent,String child)

传入一个父级路径和子级路径。

File flie2=new File("D:\\Java""1.txt");

3)File(File parent,String child)

传入一个File类型的父级路径和子级路径。

File file3=new File(new File("D:\\Java"), "1.txt");

1.3File创建

File的创建包含创建文件和创建文件夹。

1)createNewFile()

当指定文件不存在时创建此文件并返回true,当文件已经存在时直接返回false。

File file = new File("E:/temp/test.txt");
System.out.println(file.createNewFile());

2)mkdir()

当指定一级文件夹不存在时创建此文件夹并返回true,当文件夹已经存在时直接返回false。即指定的多级目录不存在时,只会创建一级的目录,子级目录不会被创建。因此推荐使用mkdirs来创建文件夹。

3)mkdirs()

当指定多级文件夹中某一级不存在时创建此文件夹并返回true,当文件夹已经存在时直接返回false。

File file = new File("E:/temp/aaa/bbb/ccc");
System.out.println(file.mkdirs());

1.4File删除

1)delete()

当指定的文件或文件夹存在时删除文件或单级空文件夹,删除成功返回true,文件/文件夹不存在或删除失败时返回false。

File file = new File("E:/temp/aaa/bbb/ccc");
System.out.println(file.delete());

1.5File获取和修改名字

 1)getAbsolutePath()

获取文件/目录的绝对路径,返回路径的字符串。

File file = new File("E:/tempFile/1.txt");
System.out.println(file.getAbsolutePath());//E:\tempFile\1.txt

2)getParent()

获取当前路径的父级目录,返回字符串

File file = new File("E:/tempFile/aaa/1.txt");
System.out.println(file.getParent());//E:\tempFile\aaa

3)getName()

获取最后一层文件或文件夹的名称,返回字符串

//获取文件名
File file = new File("E:/tempFile/1.txt");
System.out.println(file.getName());//1.txt

//获取目录
File file2 = new File("E:/tempFile/bbb");
System.out.println(file2.getName());//bbb

4)lastModified()

以毫秒值返回最后修改时间

5)length()

返回文件内容的字节数

File file = new File("E:/tempFile/1.txt");
System.out.println(file.length());

6)listFiles()

以File对象的形式返回当前路径下所有的文件和文件夹的名称(绝对路径)

File file = new File("E:/tempFile");
System.out.println(file.listFiles())

7)File.listRoots()

获取计算机中所有的盘符

8)renameTo(File dest)

将当前File对象所指向的路径修改为指定File所指向的路径(移动文件)

File file = new File("E:/tempFile/1.txt");
File file2= new File("E:/tempFile/bbb/2.txt");
//移动文件
file.renameTo(file2);

1.6File判断

当文件或文件夹不存在时都返回false,否则返回true。

1)exists()

判断指定路径的文件或文件夹是否存在,存在返回true,否则返回false。多用于当文件或文件夹不存在时去再去创建。

第一种:判断文件夹是否存在,不存在就创建:

File file = new File("E:/temp/aaa/bbb/ccc");
if (!file.exists()) {
      file.mkdirs();
}

第二种:判断文件是否存在,不存在就创建:

String filePath = "E:/tempFile/1.txt";
File file2 = new File(filePath);
//获取文件名
String fileName = file2.getName();
//获取文件的目录
String dirPath = filePath.substring(0, filePath.lastIndexOf(fileName));
File dirFile = new File(dirPath);
//判断目录是否存在,若目录不存在直接创建文件会报错
if (!dirFile.exists()) {
   dirFile.mkdirs();
}
if (!file2.exists()) {
    file2.createNewFile();
}

2)isAbsolute()

判断指定的路径是否是绝对路径,是返回true,否则返回false

File file = new File("tempFile/1.txt");
System.out.println(file.isAbsolute());//false

File file2 = new File("E:/tempFile/1.txt");
System.out.println(file2.isAbsolute());//true

3)isDirectory()

判断是否是目录,是返回true,否则返回false

File file = new File("E:/tempFile/bbb");
System.out.println(file.isDirectory());

4)isFile()

判断是否是文件,是返回true,否则返回false

File file = new File("E:/tempFile/1.txt");
System.out.println(file.isFile());

5)isHidden()

判断是否是隐藏文件/目录,是返回true,否则返回false

1.7案例演示

1)删除指定目录。要删除一个目录,必须先删除其子文件和子目录!

    public static void delete(File file) {
        if (file.exists()) {
            File[] listFiles = file.listFiles();
            for (File f : listFiles) {
                if (f.isFile()) {
                    f.delete();// 删除文件
                } else if (f.isDirectory()) {
                    delete(f);
                }
            }
            file.delete();// 删除目录
        }
    }

2)查询指定目录下以.txt结尾的文件

    public static void query(File file) {
        if(file.exists()) {
            File[] listFiles = file.listFiles();
            for (File f : listFiles) {
                if(f.isFile()&& f.getName().endsWith(".txt")) {
                    System.out.println(f);
                }else if(f.isDirectory()) {
                    query(f);
                }
            }
        }
    }

2. IO流概述

2.1概述

IO流,

2.2分类

详细的分类见下图,具体说明见后续章节。

技术图片

 

 

 

3.字符流

只能读取纯文本文件内容。

3.1输入流(Reader)

输入流的顶层类,是一个抽象类。使用实现类FileReader来创建此输入流对象。

示例:读取txt的内容

File file = new File("E:/tempFile/1.txt");
FileReader reader = new FileReader(file);
char b[] = new char[(int) file.length()];
reader.read(b);
reader.close();
System.out.println(new String(b));

3.2输出流(Writer)

输出流的顶层类,是一个抽象类。使用实现类FileWriter来创建此输出流对象。

示例:复制文本文件

        Reader reader = null;
        Writer writer = null;
        try {
            reader = new FileReader("E://tempFile/1.txt");
            writer = new FileWriter("E://tempFile/copy.txt");
            int len;
            char[] chars = new char[1024];
            while ((len = reader.read(chars)) != -1) {
                writer.write(chars, 0, len);
            }
            writer.flush();
            if (len == -1) System.out.println("文本文件复制成功");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //关闭资源
            try {
                reader.close();
                writer.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

4..字节流

5.高效流

6.准字输入输出流

7.打印流

8.对象操作流

Java之IO流

标签:src   http   trace   class   catch   概述   读取txt   abs   creat   

原文地址:https://www.cnblogs.com/zys2019/p/14283074.html


评论


亲,登录后才可以留言!