当文件内容为英文或数字时,我们可以使用字节流读取,当文件内容包含汉字时,我们需要使用字符流操作
输入流,读取一个文件中的内容
package com.test.file;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class TestInputStream {
public static void main(String[] args) {
// TODO Auto-generated method stub
//字节输入流 从文件中读数据进来 一个字节一个字节的读取 (图片 视频文件的读写)
//(一个英文字符或数字字符对应一个字节 一个中文字对应的是两个字节,所以读中文要用字符流)
//1.创建文件对象
File file=new File("/Users/yangjunbo/kaifa/Test/1.md");
//2.创建一个输入流对象
try {
FileInputStream fileInputStream=new FileInputStream(file);
//3.读数据
int a=fileInputStream.read(); //读取下一个字符 读到了返回当前字符的ascII码 读到文件结尾 则返回-1
System.out.println((char)a);
a=fileInputStream.read();
System.out.println((char)a);
//读取多个字节到数组中
byte[] arr=new byte[3];
fileInputStream.read(arr); //读取3个字节存入arr数组中
System.out.println(new String(arr, 0, 3));
//读取整个文件
while((a=fileInputStream.read())!=-1)
System.out.print((char)a);
//关闭文件
fileInputStream.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
输出流,让文件中写入内容
package com.test.file;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class TestOutputStream {
public static void main(String[] args) {
// TODO Auto-generated method stub
//字节输出流 将数据写到文件中
//1.创建文件对象
File file=new File("/Users/yangjunbo/kaifa/Test/1.md");
//2.创建字节输出流
try {
FileOutputStream fileOutputStream=new FileOutputStream(file);
//3.写内容
fileOutputStream.write('a'); //一次写入一个字节
byte[] arr=new byte[]{'b','c','d'}; //写入一个byte类型的数组
String string="daimeng";
byte[] brr=string.getBytes(); //可以将字符串转换为字节数组
fileOutputStream.write(brr);
fileOutputStream.close(); //关闭流
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}