目录
前言
起步:创建文件
File类
尝试创建一个文件
代码展示
输出结果
基础文件写入与输出:输入输出流
stream流
FileInputStream类
基本读取实现
代码展示
输出结果
FileOutputStream类
基本写入实现
代码展示
输出结果
后言
前言
在上一篇博客(Java实现ATM机模拟系统(week1)-CSDN博客)中,博主有提到要试着做一个简单的ATM机模拟系统,要做出一个合理的可使用的系统,数据的保存是一个需要思考的问题,总不能说将数据保存到内存中,然后一结束运行数据全部丢失吧。对于还未接触过数据库的我来说,能够想到的最好办法就是利用文件操作,把数据写入到文件中,需要时再进行读取。
起步:创建文件
File类
- File类的对象可以用来表示文件(File)或目录(Directory)。
- 创建了File类的对象之后,可以调用其方法对文件或目录的属性(如文件名称,日期等)进行修改。
- file类对象只能修改文件属性,不能直接进行文件读写操作。
尝试创建一个文件
代码展示
import java.io.File;public class Main {public static void main(String[] args) {File file = new File("src\\test.txt") ; //创建File类对象,并给出其相对路径,否则默认创建在当前路径下if(file.exists()){ //调用exists方法,判断文件是否存在System.out.println("文件已存在!"); //如已存在,给出提示}else { //如不存在,执行创建操作try{file.createNewFile();System.out.println("文件创建成功");}catch (Exception e){}}//基本方法演示System.out.println("文件的名字:" + file.getName());System.out.println("文件的路径:" + file.getPath());System.out.println("文件的绝对路径:" + file.getAbsolutePath());System.out.println("是否为目录:" + file.isDirectory());System.out.println("文件大小:" + file.length());}
}
输出结果
文件已存在!//之前已经创建过一回了,不是第一次输出
文件的名字:test.txt
文件的路径:src\test.txt
文件的绝对路径:D:\IDEA\IDEAcode\FileOperationTest\FileOperationTest\src\test.txt
是否为目录:false
文件大小:0
基础文件写入与输出:输入输出流
stream流
流指的是一连串流动的数据信号,通过先进先出的方式接收和发送数据
- 数据流分为输入输出流
- 输入输出流又分为字节流与字符流(本篇博客先了解对字节流的操作,字符流其实同理)
FileInputStream类
- 该类继承于InputStream类,用于进行基本的文件读取操作
- 由于使用的是字节流,无法读取中文字符
基本读取实现
代码展示
import java.io.File;
import java.io.FileInputStream;public class FileInput {public static void fileInput(File file) {try {FileInputStream fileInputStream;fileInputStream = new FileInputStream(file);for (int i = 0; i < file.length(); i++) { //循环读取并打印char s = (char) (fileInputStream.read()) ;System.out.print(s);}System.out.println(); //换行fileInputStream.close(); //关闭文件} catch (Exception e) {System.out.println("文件打开失败");}}}
输出结果
在.txt文件中写入”Hello world!“并在main方法中编写测试,得到以下结果
文件已存在!
Hello world! //文件内容
文件的名字:test.txt
文件的路径:src\test.txt
文件的绝对路径:D:\IDEA\IDEAcode\FileOperationTest\FileOperationTest\src\test.txt
是否为目录:false
文件大小:12 //文件大小发生变化
FileOutputStream类
- 该类继承于OutputStream类,用于进行基本的文件写入操作
- 由于使用的是字节流,无法读取中文字符
基本写入实现
代码展示
比如我们要在文件中写入"I love study"。首先,我们清空.txt文件中的内容,接着实现下方代码
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.EmptyStackException;public class FileOutput {public static void fileOutput(File file) throws FileNotFoundException { //抛出文件未找到的异常FileOutputStream fileOutputStream = new FileOutputStream(file) ;String string = "I love Study" ;byte[] buff = string.getBytes() ; //字符串转字节数组(因为要写入字节流)try {fileOutputStream.write(buff); //写入字节流} catch (Exception e) {}finally {try {fileOutputStream.close(); //关闭文件} catch (IOException e){e.printStackTrace();}}}
}
输出结果
在main方法中编写测试,输出以下结果
文件已存在!
I love Study //写入的字符串
文件的名字:test.txt
文件的路径:src\test.txt
文件的绝对路径:D:\IDEA\IDEAcode\FileOperationTest\FileOperationTest\src\test.txt
是否为目录:false
文件大小:12
后言
本篇博客就到此结束了,但学无止境,还有许多知识等待我们学习。
- 本篇博客初步学习了基本输入输出流的使用,实现了文件的读取和写入,但只接触了对字节流的操作,解决不了中文读写的问题,还需去学习字符流的相关操作。
- 同时,文件操作中的一些代码(如异常的抛出,try,catch,finally结构的使用)都需要进行进一步学习。
新手上路,水平有限,如有错误,还望海涵并指出!
与君共勉!