前言
普通的文件长这样:
其实目录也是一种特殊文件:
一、文件前缀知识
(一)绝对路径和相对路径
以盘符开头的的路径,叫做绝对路径,如:D:\360Downloads\cat.jpg
以.或..开头的路径,叫做相对路径,如:./t/tmp/cat.jpg (/或\作为分隔符都是正确的)
查找文件时的路径案例如下:
(二)关于程序运行时的输入和输出分析示意图
二、File
File file = new File("./t.txt");//File(文件路径)
关于File的常见方法的使用:
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
Reader reader = new FileReader("./t/text2.txt");try {}finally {reader.close();}
2):try with source
try( Reader reader = new FileReader("./t/text2.txt")){}
(三)Reader
Reader reader = new FileReader("./t/text2.txt");
对于Reader:
- read() 一次读一个字符;
- read(char[] buf) 一次读最多buf.length字符;
- read(char[] buf,int off,int len) buf是保存路径,off是buf的开始保存下标,len是保存数目.
其中,无论是哪一个方法,他们的返回值都是int类型,表示读取到的数据个数,当文件读取到eof(文件末尾),返回-1.
(四)InputStream
InputStream inputStream = new FileInputStream("./t/text2.txt");
对于InputStream,read方法的用法和Reader一样,只是这里是以字节为单位传输数据。
四、OutputStream和Writer
输出流对象(字符流/字节流)会在打开文件后,自动清空文件内容!!!
OutputStream是字节流,Writer是字符流。
(一)OutputStream
OutputStream outputStream = new FileOutputStream("./t/text1.txt");
虽然输出流在打开文件后会自动清空文件,但是也有不清空文件的办法:
通过追加的方式打开文件,此时就不会清空内容了:
OutputStream outputStream = new FileOutputStream("./t/text1.txt",true);
对于OutputStream:
outputStream.write("hello");
以字符的方式写入。
(二)Writer
Writer writer = new FileWriter("./t/text1.txt");
以字节的方式写入: writer.write(byte[] buf);
结语
这篇博客如果对你有帮助,给博主一个免费的点赞以示鼓励,欢迎各位🔎点赞👍评论收藏⭐,谢谢!!!