前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >File 类的用法, InputStream和Reader, OutputStream和Writer 的用法

File 类的用法, InputStream和Reader, OutputStream和Writer 的用法

作者头像
用户10788736
发布2023-10-16 08:41:01
1480
发布2023-10-16 08:41:01
举报
文章被收录于专栏:CSDN搬移文章CSDN搬移文章

前言

普通的文件长这样:

其实目录也是一种特殊文件:

一、文件前缀知识

(一)绝对路径和相对路径

以盘符开头的的路径,叫做绝对路径,如:D:\360Downloads\cat.jpg

以.或..开头的路径,叫做相对路径,如:./t/tmp/cat.jpg   (/或\作为分隔符都是正确的)

查找文件时的路径案例如下:


 (二)关于程序运行时的输入和输出分析示意图

二、File

代码语言:javascript
复制
File file = new File("./t.txt");//File(文件路径)

关于File的常见方法的使用:

代码语言:javascript
复制
file.creatNewFile();//创建文件(如果该文件已经存在,不会创建)
file.delete();//删除文件
file.deleteOnExit();//程序退出时再删除文件
file.mkdir();//一次只能创建一层目录
file.mkdirs();//一次创建多级目录
file.isFile();//当前文件是否是一个普通文件
file.isDirectory();//当前文件是否是目录文件
file.list();//返回String[]类型,file下所有文件名
file.listFiles();//返回File[]类型,file下所有文件
file.renameTo(new File);//改名字
file.exists();//当前文件是否存在

三、InputStream和Reader

InputStream是字节流,Reader是字符流。

(一)文本文件和二进制文件

字节流是专门操作以字节为单位的文本文件,字符流是专门操作以字符为单位的二进制文件。

区分一个文件是文本文件还是二进制文件,可以通过记事本区分,如一个文件通过记事本的方式打开后,显示的数据内容是文字还是乱码:

这个显示是乱码,故是二进制文件

这个显示是正常可读的文字,故是文本文件


(二)关闭文件的正确打开方式

关于使用一个文件的步骤是,先打开文件,使用文件,关闭文件

关闭文件是非常重要的 。这里提供两种关闭文件的方式:

1):try-finally

代码语言:javascript
复制
        Reader reader = new FileReader("./t/text2.txt");
        try {
        }finally {
            reader.close();
        }

2):try with source

代码语言:javascript
复制
       try( Reader reader = new FileReader("./t/text2.txt")){
          
       }

(三)Reader

代码语言:javascript
复制
Reader reader = new FileReader("./t/text2.txt");

对于Reader:

  1. read() 一次读一个字符;
  2. read(char[] buf) 一次读最多buf.length字符;
  3. read(char[] buf,int off,int len) buf是保存路径,off是buf的开始保存下标,len是保存数目.

其中,无论是哪一个方法,他们的返回值都是int类型,表示读取到的数据个数当文件读取到eof(文件末尾),返回-1.


(四)InputStream

代码语言:javascript
复制
InputStream inputStream = new FileInputStream("./t/text2.txt");

对于InputStream,read方法的用法和Reader一样,只是这里是以字节为单位传输数据。

四、OutputStream和Writer

输出流对象(字符流/字节流)会在打开文件后,自动清空文件内容!!!

OutputStream是字节流,Writer是字符流。

(一)OutputStream

代码语言:javascript
复制
OutputStream outputStream = new FileOutputStream("./t/text1.txt");

虽然输出流在打开文件后会自动清空文件,但是也有不清空文件的办法:

通过追加的方式打开文件,此时就不会清空内容了

代码语言:javascript
复制
OutputStream outputStream = new FileOutputStream("./t/text1.txt",true);

对于OutputStream:

代码语言:javascript
复制
outputStream.write("hello");

以字符的方式写入。

(二)Writer

代码语言:javascript
复制
Writer writer = new FileWriter("./t/text1.txt");

以字节的方式写入: writer.write(byte[] buf);

结语

这篇博客如果对你有帮助,给博主一个免费的点赞以示鼓励,欢迎各位🔎点赞👍评论收藏⭐,谢谢!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、文件前缀知识
    • (一)绝对路径和相对路径
      •  (二)关于程序运行时的输入和输出分析示意图
      • 二、File
      • 三、InputStream和Reader
        • (一)文本文件和二进制文件
          • (二)关闭文件的正确打开方式
            • (三)Reader
              • (四)InputStream
              • 四、OutputStream和Writer
                • (一)OutputStream
                  • (二)Writer
                  • 结语
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档