import java.io.FileInputStream;//导入输入流
import java.io.FileOutputStream;//导入输出流
import java.io.IOException;//导入异常类
/**
* 读写txt文本文件
* 使用字节流FileInputStrea和FileOutputStream
* @author Administrator
*
*/
public class FileInputOutputStream {
public static void main(String[] args) throws IOException {//抛出异常
/*
* 文件输出流FileOutputStream,为抽象类字节输出流OutputStream基类的子类
* 文件输入流FileInputStream,为抽象类字节输入流InputStream基类的子类
* 路径格式可以是"c:\\","c:/","c://",'\'属于转义字符,使用时需要前加'\'字符
* 字节流用来读写单字节字符,双字节字符可以写入,但读取时会失真,双字节字符比如汉字的读写用字符流
* 字节流读写时将流动的字符拆解成一个个字节,按字节读写,先进先出,读的是字符的ASCII值(字节类值0~255),写的也是字符的ASCII值
*/
/**
* 写入文件数据时,系统运行时,首先判断该文件路径是否合法,若不合法,抛出异常,若合法
* 其次判断文件路径是否存在,若不存在,将在运行时创建此文件,创建空文件
* 再次判断文件路径代表的是文件目录还是文件(文件有后缀),若是文件目录,抛出异常,若是文件
* 再次判断写入内容是覆盖文件中原有的内容还是文件尾追加写入,默认情况下,向文件写数据时将覆盖文件中原有的内容
* 最后,写入文件内容
*/
//1.写文件
//1.1创建输出流对象,该对象为目标txt文件,对象引用变量指向目标txt文件,构造方法重载,参数为目标txt文件路径,有3种方式可选
//FileOutputStream(String name)
//FileOutputStream(String name, boolean append),true表示追加写入
//FileOutputStream(File file)
FileOutputStream fos=new FileOutputStream("C:\\Users\\Administrator\\Desktop\\streamfile.txt",true);
//1.2使用字符串创建字节类数组,字节类数组长度(即字节数)作为写入流长度,每一字符(1或2字节)作为写入内容
String s="abc123";
byte[]bits=s.getBytes();
//1.3向目标txt文件中写入内容,字节类数组作为写入方法参数,数组每个元素值为写入的字符的ASCII码值,实际写入的是每个ASCII码值代表的字符
//写入方法参数不能直接是字符串类型值,只能是字节类型值(字节类值0~255)
//write有3种重载方法
//write(byte b[]),向目标路径txt文件写入字节类数组byte b[]解码后的字符
//write(byte b[], int off, int len),向目标路径txt文件写入字节类数组byte b[]中,从off下标开始len个字节解码后的字符
//write(int b),向目标路径txt文件写入b个字节的空字符
fos.write(bits);
//1.4关闭输出流
fos.close();
/**
* 读文件数据时,系统运行时,首先判断该文件路径是否合法,若不合法,抛出异常,若合法
* 其次判断文件路径是否存在,若不存在,抛出异常,若存在
* 再次判断文件路径代表的是文件目录还是文件(文件有后缀),若是文件目录,抛出异常,若是文件
* 最后,读出文件内容
*/
//2.读文件
//2.1创建输入流对象,该对象为目标txt文件,对象引用变量指向目标文件,构造方法重载,参数为目标txt文件路径,有2种方式可选
//FileInputStream(String name)
//FileInputStream(File file)
FileInputStream fis=new FileInputStream("C:\\Users\\Administrator\\Desktop\\streamfile.txt");
//2.2实例方法available()返回目标txt文件大小(字节数)
System.out.println("可读取的字节数:"+fis.available());
//2.3读取目标txt文件的每一个字符
//实例方法read()读取下一个字符,并返回其ASCII码值
//the next byte of data, or -1 if the end of the file is reached
System.out.println("文件内容是:");
int data;
while ((data=fis.read())!=-1) {
System.out.print((char)data);
}
//2.4关闭输入流
fis.close();
}
}
使用字节流读写文本文件:FileInputStrea和FileOutputStream
最新推荐文章于 2021-12-11 01:20:49 发布