Java IO基础总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hmxz2nn/article/details/81711768

Java语言定义了许多类用以负责各种方式的输入或者输出,这些类都被放在java.io包中。
其中包括的主要的类如下:
1. File(文件特征与管理):用于文件或者目录的描述信息,例如生成新目录,修改文件名,删除文件,判断文件所在路径等。
2. InputStream(二进制格式操作):抽象类,基于字节的输入操作,是所有输入流的父类。定义了所有输入流都具有的共同特征。
3. OutputStream(二进制格式操作):抽象类,基于字节的输出操作,是所有输出流的父类。定义了所有输出流都具有的共同特征。

Java中字符是采用Unicode标准,一个字符是16位,即一个字符使用两个字节来表示。为此,JAVA中引入了处理字符的流。
4. Reader(文件格式操作):抽象类,基于字符的输入操作。
5. Writer(文件格式操作):抽象类,基于字符的输出操作。

6.RandomAccessFile(随机文件操作):它的功能丰富,可以从文件的任意位置进行存取(输入输出)操作。
这里写图片描述

输入流

Java输入流包括字节输入流和字符输入流。

字节输入流InputStream

InputStream类是字节输入流的抽象类,是所有字节输入流的父类,InputStream类具有如下图所示的层次结构:
这里写图片描述
InputStream是输入字节数据用的类,所以InputStream类提供了3种重载的read方法。
Inputstream类中的常用方法:
public abstract int read( ):读取一个byte的数据,返回值是高位补0的int类型值。若返回值为-1说明没有读取到任何字节读取工作结束。
public int read(byte b[ ]):读取b.length个字节的数据放到b数组中。返回值是读取的字节数。该方法实际上是调用下一个方法实现的。
public int read(byte b[ ], int off, int len):从输入流中最多读取len个字节的数据,存放到偏移量为off的b数组中。
public int available( ):返回输入流中可以读取的字节数。注意:若输入阻塞,当前线程将被挂起,如果InputStream对象调用这个方法的话,它只会返回0,这个方法必须由继承InputStream类的子类对象调用才有用。
public long skip(long n):忽略输入流中的n个字节,返回值是实际忽略的字节数, 跳过一些字节来读取 。
public int close( ) :我们在使用完后,必须对我们打开的流进行关闭。

字符输入流Reader

Java中的字符是Unicode编码的,是双字节的。InputStream是用来处理字节的,在处理字符文本时很不方便。Java为字符文本的输入提供了专门的一套类Reader。Reader类是字符输入流的抽象类,所有字符输入流的实现都是它的子类。
这里写图片描述

输出流
字节输出流OutputStream

输出流OutputStream类是字节输出流的抽象类。
这里写图片描述
OutputStream提供了3个write方法来做数据的输出,这个是和InputStream是相对应的。
public abstract void write(int b) :先将int转换为byte类型,把低字节写入到输出流中。
public void write(byte b[ ]):将参数b中的字节写到输出流。
public void write(byte b[ ], int off, int len) :将参数b的从偏移量off开始的len个字节写到输出流。
public void flush( ) :将数据缓冲区中数据全部输出,并清空缓冲区。
public void close( ) : 关闭输出流并释放与流相关的系统资源。

字符输出流Reader

Writer类是字符输出流的抽象类,所有字符输出类的实现都是它的子类。
这里写图片描述

FILE类

File类是IO包中唯一代表磁盘文件本身的对象。通过File来创建,删除,重命名文件。File类对象的主要作用就是用来获取文本本身的一些信息。如文本的所在的目录,文件的长度,读写权限等等。

FILE类概述

File更应该叫做一个路径,文件路径或者文件夹路径。

FILE类构造方法

File(String pathname):根据一个路径得到File对象。
File(String parent, String child):根据一个目录和一个子文件/目录得到File对象。
File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象。

扫描二维码关注公众号,回复: 3330434 查看本文章
File类的创建功能

public boolean createNewFile():创建文件 如果存在这样的文件,就不创建了
public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了
public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来
注意:
使用createNewFile()文件创建的时候不加.txt或者其他后缀也是文件;
使用mkdir()创建文件夹的时候,如果起的名字是比如aaa.txt也是文件夹不是文件;
如果你创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下。

File类的重命名和删除功能

public boolean renameTo(File dest):把文件重命名为指定的文件路径。
public boolean delete():删除文件或者文件夹。
重命名注意事项:
如果路径名相同,就是改名。
如果路径名不同,就是改名并剪切。
删除注意事项:
Java中的删除不走回收站。
要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹。

File类的判断功能

public boolean isDirectory():判断是否是目录
public boolean isFile():判断是否是文件
public boolean exists():判断是否存在
public boolean canRead():判断是否可读
public boolean canWrite():判断是否可写
public boolean isHidden():判断是否隐藏

File类的获取功能

public String getAbsolutePath():获取绝对路径
public String getPath():获取路径
public String getName():获取名称
public long length():获取长度。字节数
public long lastModified():获取最后一次的修改时间,毫秒值
public String[] list():获取指定目录下的所有文件或者文件夹的名称数组
public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组

import java.io.File;
public class Test {
    public static void main(String[] args) throws Exception{
        // TODO Auto-generated method stub
        File file=new File("aa.txt");//文件默认就创建在你创建的项目下面,刷新即可看到
        System.out.println(file.exists());//判断文件是否存在
        file.createNewFile();//创建文件,不是文件夹
        System.out.println(file.exists());//再次判断是否存在
        System.out.println(file.getName());//获取文件的名字
        System.out.println(file.getAbsolutePath());//获取文件的绝对路径
        System.out.println(file.getPath());//获取文件的相对路径
        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(file.isDirectory());//判断文件是否是一个目录
        System.out.println(file.isHidden());//文件是否隐藏
        System.out.println(file.isFile());//判断文件是否存在
    }

}
文件名称过滤器的概述及使用

public String[] list():获取指定目录下的所有文件或者文件夹的名称数组。
public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组。

import java.io.File;
public class FileTest {
    public static void main(String[] args){
        File file=new File("D:/");//指定文件目录
        String[] str=file.list();//获取指定目录下的所有文件或者文件夹的名称数组
        for(String s : str){//加强for循环遍历输出
            System.out.println(s);
        }        
    }
}
import java.io.File;
public class FileTest {
    public static void main(String[] args){
        File file=new File("D:/");//指定文件路径
        File[] f=file.listFiles();//获取指定目录下的所有文件或者文件夹的File数组
        for(File fi : f){//加强for循环遍历输出
            System.out.println(fi);
        }

    }
}

参考:
1.https://www.cnblogs.com/biehongli/p/6074713.html
2.https://www.cnblogs.com/ningvsban/p/3600185.html
3.http://www.runoob.com/java/java-file.html

猜你喜欢

转载自blog.csdn.net/hmxz2nn/article/details/81711768