java-IO流(1)-IO流和File类的介绍

目录

1 IO流的概念

2 IO流体系结构

3Java中流的分

3.1按流向分

3.2按数据传输单位分

3.3按功能分

4File类介绍

4.1File类的作用

4.2常见的构造函数

4.3提供方法

4.3.1创建和删除

4.3.2文件获取

4.3.3重命名和修改路径功能

4.3.4判断功能

4.3.5过滤功能的接口方法

5RandomAccessFile(随机访问文件类)的介绍

5.1声明形式

5.2构造函数

5.3特殊方法


1 IO流的概念

流是一个抽象的概念,当程序读取数据时,就会开启一个通往数据源的流,这个数据源可以是文件、内存或者是网络链接;或当程序写入数据时,就会开启一个通往目的地的流

java中把不同到的来源或者目的地的数据都统一抽象为数据流

流的本质:就是对数据的传输,数据的一个集合,有方向性

2 IO流体系结构

  • IO流的体系结构图

image.png

  • 流的实现类

image.png

3Java中流的分

3.1按流向分

输入流:从 数据源 (磁盘,U盘,网络,键盘等)读取数据到 程序 的流

输出流:从 程序 写入数据到 目的地数据源(磁盘,U盘,网络,显示器等) 的流

图片 1.png

3.2按数据传输单位分

字节流:以字节为单位传输数据的流

字符流:以字符为单位传输数据的流

3.3按功能分

节点流:用于直接操作目标设备的流

过滤流:对一个已存在的流进行包装,以提供更强大和灵活的读写功能

4File类介绍

4.1File类的作用

对文件,目录的抽象表示,该类主要对目录和文件进行创建、修改、删除、过滤等操作

4.2常见的构造函数

//3种构造方法
File(String pathname)  //用路径字符串实例化File实例
File(String parent, String child) //从父路径名(字符串)和子路径名(字符串)来构建file实例
File(File parent, String child) //根据父路径File实例和子路径名(字符串)来构建实例

//实例化演示
  //String pathname
  File file1 = new File("/Users/ccc/Desktop/IO/file1.txt");

  //String parent, String child
  File file2 = new File("/Users/ccc/Desktop/IO", "file2.txt");

  //File parent, String child
  File parent = new File("/Users/ccc/Desktop/IO");//先实例化出父路径
  File file3 = new File(parent, "file3.txt");

4.3提供方法

4.3.1创建和删除

创建文件  createNewFile()

创建单个目录  mkdir()

创建多级目录  mkdirs()

删除文件或者单个目录  delete()

//创建文件
        File test = new File("/Users/ccc/Desktop/IO/a.txt");
        try {
        //public boolean createNewFile() throws IOException
        // 创建新文件 当文件不存在时创建该文件并返回true,当文件存在时不会创建文件并返回false
        //创建文件时,路径必须存在,否则创建失败
        //创建:createNewFile()
            boolean newFile = test.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }

        //没有指明创建路径时,文件将会被创建在当前的这个项目路径下
        File test2 = new File("b.txt");
        test2.createNewFile();

//创建目录
        //boolean mkdir()
        // 通过抽象路径来创建目录,mkdir()只能创建一级目录
        File test3 = new File("/Users/ccc/Desktop/IO/c");
        test3.mkdir();

        //boolean mkdirs()
        //mkdirs()用来创建多级目录
        File test4 = new File("/Users/ccc/Desktop/IO/d/e");
        test4.mkdirs();
        
        //没有指明创建路径时,调用生成文件方法时,文件将会被创建在这个项目路径下
        File test5 = new File("b");
        test5.createNewFile();
        //没有指明创建路径时,调用生成目录(文件夹)方法时,目录(文件夹)将会被创建在这个项目路径下
        //test5.mkdirs();
        

//删除
     //删除目录和文件
    //boolean delete()
    //只能删除存在的一层文件或者目录,不能直接删除多级目录
         test5.delete();

4.3.2文件获取

获取绝对路径  带盘符  getAbsolutePath()

获取相对路径   不带盘符  getPath()
获取文件名或者路径名  getName()

获取文件字节数   length()
获取目录下面的内容(文件或者目录) list()
返回目录文件和目录名称file实例数组  listFiles()
 

//文件获取

File file = new File("D:\\ccc\\JAVASE");

//获取绝对路径  带盘符
//String getAbsolutePath()
System.out.println(file.getAbsoluteFile());

//相对路径   不带盘符
//String getPath()
System.out.println(file.getPath());

//获取文件名或者路径名
//String getName()
System.out.println(file.getName());

//文件字节数
//long length()
System.out.println(file.length());

//获取目录下面的内容(文件或者目录)
//String[] list()
String[] list = file.list();
for(String i:list ){
    System.out.println(i);
}

//返回目录文件和目录名称file实例数组
//File[] listFiles()
File[] files = file.listFiles();
for(File i: files){
    System.out.println(i.getName());
}

4.3.3重命名和修改路径功能

renameTo()

//重命名功能 和 修改路径功能 都使用renameTo()方法
//区别:修改前后的路径相同就是重命名,不同则是修改路径

//重命名功能
        //boolean renameTo(File dest)
        //先在该项目路径下创建一个文件b.txt
        File text = new File("b.txt");
        //实例化一个修改后的名称bb.txt
        File text1 = new File("bb.txt");
        text.renameTo(text1);

//修改路径功能
        //boolean renameTo(File dest)
        File text = new File("bb.txt");
        File text1 = new File("C:\\Users\\ccc\\Desktop\\IO流\\bb.txt");
        text.renameTo(text1);
//重命名功能 和 修改路径功能 都使用renameTo()方法
//区别:修改前后的路径相同就是重命名,不同则是修改路径

4.3.4判断功能

是否是文件  isFile()

是否是目录(文件夹)isDirectory()

是否是隐藏文件  isHidden()

文件是否可读      canRead()

文件是否可写 canWrite()

文件是否存在 exists()

//判断功能        
        File test = new File("bb.txt");
        test.createNewFile();

        //boolean isFile()
        //是否是文件
        boolean b = test.isFile();
        System.out.println(b);

        //boolean isDirectory()
        //是否是目录(文件夹)
        boolean b1 = test.isDirectory();
        System.out.println(b1);

        //boolean isHidden()
        //是否是隐藏文件
        System.out.println(test.isHidden());
        
        //boolean canRead()
        //文件是否可读
        System.out.println(test.canRead());

        //boolean canWrite()
        //文件是否可写
        System.out.println(test.canWrite());

        //boolean exists()
        //文件是否存在
        System.out.println(test.exists());

4.3.5过滤功能的接口方法

public interface FilenameFilter {
    //参数为目录和指定过滤名称
    //返回结果 true: 可以返回  false:不能返回
    boolean accept(File dir, String name);
}

5RandomAccessFile(随机访问文件类)的介绍

5.1声明形式

public class RandomAccessFile implements DataOutput, DataInput, Closeable

5.2构造函数

public RandomAccessFile(String name, String mode)
public RandomAccessFile(File file, String mode)  //mode 可以是 r rw rws rwd

r:以只读的模式打开,如果调用write方法将会抛出IO异常

rw:以读和写的模式打开

rws:以读和写的模式打开,要求对”文件的内容“和”元数据“的每个更新都同步到存储设备

rwd:以读和写的模式打开,要求对”文件的内容“的每个更新都同步到存储设备

5.3特殊方法

long getFilePointer() //返回文件记录中指针的当前位置
void seek(long pos) //将文件记录移动到指定的pos文件  

在文件中的指定位置插入字符串问题(戳下面蓝色字跳转哦~):

在文件中的指定位置插入字符串问题

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值