Java IO流 上 (B站孙探老师教程学习笔记 )

点击查看 Java IO流 合集
在Java中文件/文件夹就是对象,认为文件夹是一个特殊的文件

File类

构造器

 public File(String pathname);//输入文件路径
 public File(String parent, String child);//父目录和子文件
 public File(File parent, String child);//文件夹对象,和子文件

常用方法–创建功能

//创建文件,需要目录存在,若不存在将会报错。如果创建成功则返回true,如果创建失败则返回false(文件已经存在)
public boolean createNewFile() throws IOException;

//创建文件夹,需要父目录存在。成功则返回true。如果文件夹已存在或父目录不存在则返回false
public boolean mkdir();
//创建文件夹,如果父目录不存在则会同时创建父目录和文件夹。如果文件夹已存在则返回false
public boolean mkdirs();

执行createNewFile时,如果目录不存在则会抛出下列异常。
在这里插入图片描述

常用方法–删除功能

//删除文件
public boolean delete();

如果删除成功则返回true,如果文件夹下面还有文件/文件夹则不能删除,此时会返回false。如果File的文件/文件夹不存在也会返回false。

常用方法–重命名/移动文件

public boolean renameTo(File dest);

renameTo操作有两种情况
1.要改名的文件和传入的File父目录相同,只有文件/文件夹名不同

File file1 = new File("F:\\a.txt");
file1.renameTo(new File("F:\\b.txt"));

此时a.txt将会变成b.txt
2.要改名的文件和传入的File的目录不同

File file1 = new File("F:\\a.txt");
file1.renameTo(new File("D:\\b.txt"));

F盘下的a.txt将会被剪切到D盘。但是注意,如果a是一个文件夹的话,文件夹中不能有文件或者文件夹

常用方法–判断方法

File file1 = new File("F:\\a.txt");
System.out.println("是否是文件夹:"+file1.isDirectory());//是否是文件夹
System.out.println("是否是文件:"+file1.isFile());//是否是文件
System.out.println("是否存在:"+file1.exists());//是否存在
System.out.println("是否可读:"+file1.canRead());//是否可读
System.out.println("是否可写:"+file1.canWrite());//是否可写
System.out.println("是否隐藏:"+file1.isHidden());//是否隐藏

在这里插入图片描述

File file1 = new File("F:\\a");
file1.mkdir();
System.out.println("是否是文件夹:"+file1.isDirectory());//是否是文件夹
System.out.println("是否是文件:"+file1.isFile());//是否是文件
System.out.println("是否存在:"+file1.exists());//是否存在
System.out.println("是否可读:"+file1.canRead());//是否可读
System.out.println("是否可写:"+file1.canWrite());//是否可写
System.out.println("是否隐藏:"+file1.isHidden());//是否隐藏

在这里插入图片描述

常用方法–获取功能

File file1 = new File("test/a.txt");
System.out.println("绝对路径:"+file1.getAbsolutePath());//获取绝对路径 (相对于盘符的路径)
System.out.println("相对路径:"+file1.getPath());//获取相对路径(相对于项目的路径。如果文件不在项目路径里,则返回绝对路径)
System.out.println("名字:"+file1.getName());//获得文件/文件夹名字
System.out.println("长度(字节):"+file1.length());//获取长度(字节数) 如果文件不存在则返回0。如果file1是文件夹,则不能得到正确的大小。
System.out.println("最后一次修改时间(毫秒):"+file1.lastModified());//获取最后一次的修改时间(毫秒)如果文件不存在则返回0

在这里插入图片描述

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

    File file1 = new File("src");
    String[] list = file1.list();//返回目录下所有文件/文件夹的名称数组
    for (String s : list) {
    
    
        System.out.println(s);
    }

    File[] files = file1.listFiles();//返回目录下所有文件/文件夹的File数组
    System.out.println(getSize(files));//打印文件夹大小

    }
    //获取文件夹大小
static int getSize(File[] files){
    
    
     int size = 0;
     for (File file : files) {
    
    
         //获取文件夹的大小
         if(file.isFile()){
    
    
             size += file.length();
         }else {
    
    
             size += getSize(file.listFiles());
         }
     }
     return size;
 }

IO流

数据可以分成字符数据和字节数据。字符数据是指转换成字符后我们就能读懂,如文本信息。字节流数据是指,转换成字符后我们也看不懂。如音频 视频 图片等。
字节输入流:InputStream
字节输出流:OutputStream

字符输入流:Reader
字符输出流:Writer

不管是字节数据还是字符数据,实际上存储的都是字节。字符数据可以直接通过码表转换成人可以看动的字符。而字节数据则要借助相应的软件,把字节转换成相应的人可以看动的东西。
实际上,字符流也可以看成是字节流。

FileOutPutStream

class FileOutputStream extends OutputStream
/*File file = new File("a.txt");
OutputStream os = new FileOutputStream(file);*/

OutputStream os = new FileOutputStream("a.txt");
os.write("你好".getBytes());
os.close();

猜你喜欢

转载自blog.csdn.net/qq_30033509/article/details/114782969
今日推荐