文件字节流
FileInputStream:文件字节输入流
FileIOutputStream:文件字节输出流
文件字符流
FileReader:文件字符输入流
FileWriter:文件字符输出流
转换流:
转换流,是将字节流转为字符流的一种中间流
字节输入流转为字符输入流: InputStreamReader
定义:public class InputStreamReader extends Reader
构造方法:public InputStreamReader(InputStream in) //字节流构造传入
public InputStreamReader(InputStream in, String charsetName) //增加编码设置
字节输出流转为字符输出流: OutputStreamWriter
定义:public class OutputStreamWriter extends Writer
构造方法:public OutputStreamWriter(OutputStream out)
public OutputStreamWriter(OutputStream out, String charsetName)
编码示例:从文件读取txt文件,将其内容按字节流读出,并转为字符流,在打印台显示;
将字符串输出到文件中
class MyStream{
//读取文件内容并打印在控制台
public static void printTxt(File file) throws Exception {
if (file.exists()){
InputStream in = new FileInputStream(file);
//转为字符流
Reader reader = new InputStreamReader(in);
char[] c = new char[1024];
int b;
while ((b = reader.read(c)) != -1){
System.out.println(c);
}
//注意关闭顺序,先关闭外围,再关闭内围
reader.close();
in.close();
}
}
//将字符串输出到文件中保存
public static void save(File file)throws Exception{
if(!file.exists()){
//文件不存在,创建目录和创建文件
file.getParentFile().mkdirs();
file.createNewFile();
}
FileOutputStream out = new FileOutputStream(file);
//转为字会输出流
Writer writer = new OutputStreamWriter(out);
writer.write("今天日期是:"+ LocalDate.now().getYear()+"-"+LocalDate.now().getMonthValue()+"-"+LocalDate.now().getDayOfMonth());
//注意关闭顺序,先关闭外围,再关闭内围
writer.close();
out.close();
}
}