Java文件操作

目录

1: File类:

        1.1: File类的主要特点:

        1.2: 主要方法和用法:

2:Stream流:

        2.1:字节流(Byte Stream)

        2.2:字符流(Character Stream)

        2.3:字节流和字符流的区别:


1: File类:

File类是Java中用于表示文件和目录路径名的抽象表示的类。

1.1: File类的主要特点:

        1:表示文件和目录:file类可以表示文件和目录路径名,并提供了操作这些文件和目录的方法。

        2:基本操作方法:file类提供了一系列方法用于执行文件和目录操作,如创建,删除,重命名,检查存在性等。

        3:获取文件信息:可以通过File类获取文件的信息,包括文件大小,修改时间,文件名等。

        4:目录操作:除了文件操作,File类也可以用于操作目录,包括列出目录中的文件列表,创建新目录,删除目录等。

1.2: 主要方法和用法:

        1.构造方法:File类有多个构造方法,可以传入文件路径字符串或者文件路径名构造File对象。

        2.文件操作方法:

  • createNewFile():创建新文件。
  • delete():删除文件或目录。
  • renameTo(File dest):重命名文件或目录。
  • exists():检查文件或目录是否存在。

        3.获取文件信息方法:

  • getName():获取文件名。
  • length():获取文件大小。
  • lastModified():获取文件最后修改时间等。

        4.目录操作方法:

  • list():列出目录中的文件列表。
  • mkdir():创建新目录。
  • delete():删除目录。

2:Stream流:

在Java中,数据流(Stream)是一种用于处理输入/输出操作的抽象概念。数据流可以看作是字节或字符的序列,通过流可以实现数据在程序之间的传输。在Java中,主要有字节流和字符流两种类型的数据流。

        2.1:字节流(Byte Stream):

  • InputStream:用于从源读取数据的抽象类。

  • OutputStream:用于想目标写入数据的抽象类      

// 读取文件内容
try (InputStream inputStream = new FileInputStream("input.txt")) {
    int data = inputStream.read();
    while (data != -1) {
        System.out.print((char) data);
        data = inputStream.read();
    }
} catch (IOException e) {
    e.printStackTrace();
}

// 写入文件内容
try (OutputStream outputStream = new FileOutputStream("output.txt")) {
    String str = "Hello, Java Streams!";
    byte[] data = str.getBytes();
    outputStream.write(data);
} catch (IOException e) {
    e.printStackTrace();
}

        2.2:字符流(Character Stream):

  • Reader:用于读取字符流的抽象类。
  • Writer:用于写入字符流的抽象类。

         

// 读取文件内容
try (Reader reader = new FileReader("input.txt")) {
    int data = reader.read();
    while (data != -1) {
        System.out.print((char) data);
        data = reader.read();
    }
} catch (IOException e) {
    e.printStackTrace();
}

// 写入文件内容
try (Writer writer = new FileWriter("output.txt")) {
    String str = "Hello, Java Streams!";
    writer.write(str);
} catch (IOException e) {
    e.printStackTrace();
}

2.3:字节流和字符流的区别:

字节流和字符流在Java中的区别主要体现在数据的处理方式和适用场景上。

  1. 数据处理方式:

    • 字节流(Byte Stream)以字节为单位进行读写操作,可以处理字节数据(二进制数据),例如图片、音频、视频等。
    • 字符流(Character Stream)以字符为单位进行读写操作,可以处理文本数据,对于处理字符数据更加方便。
  2. 字符编码:

    • 字节流是以字节为单位进行读写,不考虑字符编码,只是简单地传输字节数据,无法读取中文字符。
    • 字符流在读写字符时,会根据指定的字符编码进行字符与字节之间的转换。例如,使用UTF-8编码进行读写操作时,字符流会自动将字符转换成对应的字节序列。
  3. 适用场景:

    • 字节流适用于处理二进制数据,例如文件的复制、网络传输等。
    • 字符流适用于处理文本数据,例如读取、写入文本文件、处理字符串等。

选择使用字节流还是字符流,需要根据具体的使用场景和数据类型来决定:

  • 如果需要处理二进制数据(如图像、音频、视频等),或者直接读取/写入字节流的数据(如网络传输),则应该使用字节流。
  • 如果需要处理文本数据(如读取/写入文本文件、处理字符串等),并且需要考虑字符编码的转换,则应该使用字符流。

此外,Java中提供了字符流和字节流之间的桥梁类,可以方便地进行流之间的转换:

  • InputStreamReader和OutputStreamWriter:用于将字节流转换为字符流。
  • FileInputStream和FileOutputStream:用于将字符流转换为字节流。

需要根据具体需求选择合适的数据流类型,以实现数据的有效处理。

  • 26
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值