io包
1.FileInputStream字节输入流(读取)
默认:源文件字符—》程序十进制
read()方法:一次只能读取一个字节,当读取到文件末尾,返回值为-1
close()方法:关闭流释放资源–》Java程序占用的系统资源被释放
注意:Windows平台使用\作为路径分隔符,在Java字符串中需要用\表示一个\。Linux平台使用/作为路径分隔符
//1.创建字节输入流对象
FileInputStream fis = new FileInputStream("D:\\abc.txt");
//2.读取文件中的数据
int f = fis.read();
//一次只能读取一个字节,当读取到文件末尾,返回值为-1,鼠标点击read()方法,查看返回数据类型,
//输出的是字符对应的十进制数,参考ASCII码,转换为字符类型,需要强制转换
System.out.println((char)f);
while循环输出文件所有内容
int f;
//不确定循环次数,使用while
//在循环中不断地调用read方法,并把读取到的数据给f复制,只要没有读取到-1,说明没有达到文件末尾
while((f = fis.read()) != -1) {
System.out.println((char)f);
}
fis.close();//关闭流释放资源
说明:在程序还在执行的状态下,若不关闭流,Java占用的系统文件(如abc.txt),将不能被操作(删除、重命名等)
2.FileOutputStream字节输出流
默认:程序十进制—》写出字符
特点:
- 输出流写出数据,若不存在指定文件,将自动创建
- 输出流写出数据,如果关联的文件已经存在,会将原本内容覆盖;若不想覆盖原本内容,可以在构造方法的位置加上true开关即可实现追加。
write()方法:写出数据(十进制)
2.1单个字节写出
//1.创建字节输出对象,写到write.txt文件中,若不存在指定文件,将自动创建
FileOutputStream fos = new FileOutputStream("D:\\write.txt");
//2.写出数据
fos.write(97);
//3.关闭流释放资源
fos.close();
文件中写入的是a
2.2当我们不知道字符对应的字节数时,采用getBytes()方法
byte[] bytes = "hello".getBytes();
//输出字符对应的所有字节
System.out.println(Arrays.toString(bytes));
//将字符写到文件中
fos.write(bytes);
Java程序输出[104, 101, 108, 108, 111]
文件中是hello
追加不覆盖原本内容
FileOutputStream fos = new FileOutputStream("D:\\write.txt",true);