java io 文本格式存储对象到文件
本文记录利用java 字符流把对象保存本地文件,然后读取到对象中。旨在练习常用javaio操作。
用到的java io流如下:
FileOutputStream 文件输出流,可以打开一个文件流,用于向文件写入内容。 BufferedOutputStream输出缓冲流,可以包装一个输出流,优化流的写入效率。 PrinterWriter 文本输出流,可以包装一个输出流,用于向文件写入字符。
FileInputStream 文件输入流,可以打开一个文件流,用于读取文件内容。 BufferedInputStream 数据缓冲流,可以包装一个输入流,优化流的读取效率。 Scanner 可以包装一个输入流,用于读取文本内容。
代码如下:
//测试代码
public class TestIo {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//产生数据
List<User> listData = new ArrayList();
for (int i = 0; i < 100; i++) {
User user = new User();
user.id = i;
user.userName = "张xxx" + i;
listData.add(user);
}
//不存在创建文件
File file = new File("./testFile");
boolean isExit = file.exists();
if (!isExit) {
file.mkdir();
}
Path path = Paths.get(file.getPath() + File.separator + "user.data");
// Files.copy();
if (!Files.exists(path)) {
Files.createFile(path);
}
//声明流
FileInputStream fileIn = null;
FileOutputStream outPut = null;
//保存数据
try {
PrintWriter printWriter;
outPut = new FileOutputStream("./testFile/user.data");
printWriter = new PrintWriter(new BufferedOutputStream(outPut));
printWriter.println(listData.size());
for (int i = 0; i < 100; i++) {
User user = listData.get(i);
user.writeData(printWriter);
}
printWriter.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//读取数据
try {
fileIn = new FileInputStream("./testFile/user.data");
Scanner scaner = new Scanner(new BufferedInputStream(fileIn));
int size = Integer.parseInt(scaner.nextLine());
List<User> readData = new ArrayList();
for(int i =0;i<size;i++){
User user = new User();
user.readData(scaner);
readData.add(user);
System.out.println(user.id+user.userName);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
fileIn.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//user实体类
public class User {
//id
public int id;
//用户名
public String userName;
//写入数据
public void writeData(PrintWriter out) {
out.println(id+"|"+userName);
}
//读取数据
public void readData( Scanner scaner){
String content = scaner.nextLine();
String [] arrayContent = content.split("\|");
id = Integer.parseInt(arrayContent[0]);
userName = arrayContent[1];
}
}
希望本文对你有所帮助
