Reader与FileReader
FileReader
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
//引入资源
/**
* @Author lichangxin
* @date 2020-08-04
* @Des
*/
public class demo {
public static void main(String[] args) {
FileReader fr=null;
try {
//创建1字符输入流对象
fr= new FileReader("h:/test/test.txt");
//read方法
StringBuffer s=new StringBuffer();
char[] ch=new char[1024];
int len=-1;
while ((len=fr.read(ch))!=-1){
s.append(ch);
}
System.out.println(s);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
//关闭流
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
中文乱码问题
字符编码格式:GBK、UTF-8、GB2312
System.out.println(System.getProperty("file.encoding"));
BufferedReader类
Writer及其子类
flush才能写入,close关闭
BufferedWriter类
读写二进制文件
序列化
import java.io.Serializable;
/**
* @Author lichangxin
* @date 2020-08-04
* @Des
*/
public class Student implements Serializable {
private int age;
private String name;
private String sex;
private String password;
public Student() {
}
public Student(int age, String name, String sex, String password) {
this.age = age;
this.name = name;
this.sex = sex;
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
反序列化
//避免被序列化和反序列化
private transient String password;
ObjectOutputStream oos=null;
FileOutputStream fos=null;
ObjectInputStream ois=null;
FileInputStream fis=null;
try {
fos=new FileOutputStream("h:/test/student.txt");
oos=new ObjectOutputStream(fos);
fis=new FileInputStream("h:/test/student.txt");
ois=new ObjectInputStream(fis);
oos.writeObject(student);
Student o = (Student) ois.readObject();
System.out.println(o.getPassword());
静态方法reader
public static String readFile(String path){
File f=new File(path);
FileReader fr=null;
String str=null;
try {
fr=new FileReader(f);
char[] c=new char[(int) f.length()];
fr.read(c);
str=new String(c);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return str;
}
静态方法writer
public static void writerFile(String str,String path,boolean isAppend){
File f=new File(path);
FileWriter fw=null;
try {
fw=new FileWriter(f,true);
fw.write(str);
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
静态方法BufferedReader
public static String readBuffer(String path){
File f=new File(path);
FileReader fr=null;
String str=null;
BufferedReader br=null;
try {
fr=new FileReader(f);
br= new BufferedReader(fr);
String s;
StringBuffer sb=new StringBuffer();
while ((s=br.readLine())!=null){
sb.append(s+"\r\n");
}
str=new String(sb);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return str;
}
静态方法BufferedWriter
public static void writerBuffer(String str,String path,boolean isAppend){
File f=new File(path);
FileWriter wr=null;
BufferedWriter bw=null;
try {
wr=new FileWriter(f);
bw=new BufferedWriter(wr);
bw.write(str);
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
wr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}