từ HashMap
thực hiện giao diện Serializable
, bạn có thể chỉ cần sử dụng ObjectOutputStream
lớp để viết toàn bộ Map
để gửi và đọc lại bằng cách sử dụng ObjectInputStream
lớp
dưới mã đơn giản để giải thích việc sử dụng của ObjectOutStream
và ObjectInputStream
import java.util.*;
import java.io.*;
public class A{
HashMap<String,String> hm;
public A(){
hm=new HashMap<String,String>();
hm.put("1","A");
hm.put("2","B");
hm.put("3","C");
method1(hm);
}
public void method1(HashMap<String,String> map){
//write to file : "fileone"
try{
File fileOne=new File("fileone");
FileOutputStream fos=new FileOutputStream(fileOne);
ObjectOutputStream oos=new ObjectOutputStream(fos);
oos.writeObject(map);
oos.flush();
oos.close();
fos.close();
}catch(Exception e){}
//read from file
try{
File toRead=new File("fileone");
FileInputStream fis=new FileInputStream(toRead);
ObjectInputStream ois=new ObjectInputStream(fis);
HashMap<String,String> mapInFile=(HashMap<String,String>)ois.readObject();
ois.close();
fis.close();
//print All data in MAP
for(Map.Entry<String,String> m :mapInFile.entrySet()){
System.out.println(m.getKey()+" : "+m.getValue());
}
}catch(Exception e){}
}
public static void main(String args[]){
new A();
}
}
hoặc nếu bạn muốn ghi dữ liệu dưới dạng văn bản để nộp bạn chỉ có thể lặp qua Map
và viết khoá và giá trị từng dòng, và đọc lại từng dòng và thêm vào HashMap
import java.util.*;
import java.io.*;
public class A{
HashMap<String,String> hm;
public A(){
hm=new HashMap<String,String>();
hm.put("1","A");
hm.put("2","B");
hm.put("3","C");
method2(hm);
}
public void method2(HashMap<String,String> map){
//write to file : "fileone"
try{
File fileTwo=new File("filetwo.txt");
FileOutputStream fos=new FileOutputStream(fileTwo);
PrintWriter pw=new PrintWriter(fos);
for(Map.Entry<String,String> m :map.entrySet()){
pw.println(m.getKey()+"="+m.getValue());
}
pw.flush();
pw.close();
fos.close();
}catch(Exception e){}
//read from file
try{
File toRead=new File("filetwo.txt");
FileInputStream fis=new FileInputStream(toRead);
Scanner sc=new Scanner(fis);
HashMap<String,String> mapInFile=new HashMap<String,String>();
//read data from file line by line:
String currentLine;
while(sc.hasNextLine()){
currentLine=sc.nextLine();
//now tokenize the currentLine:
StringTokenizer st=new StringTokenizer(currentLine,"=",false);
//put tokens ot currentLine in map
mapInFile.put(st.nextToken(),st.nextToken());
}
fis.close();
//print All data in MAP
for(Map.Entry<String,String> m :mapInFile.entrySet()){
System.out.println(m.getKey()+" : "+m.getValue());
}
}catch(Exception e){}
}
public static void main(String args[]){
new A();
}
}
LƯU Ý: trên mã có thể không phải là cách nhanh nhất để làm nhiệm vụ này, nhưng tôi muốn thể hiện một số ứng dụng của Clas ses
Xem ObjectOutputStream, ObjectInputStream, HashMap, Serializable, StringTokenizer
Bạn đã thử gì? Bạn có thể sử dụng tuần tự hóa Java, XML, CSV, dữ liệu nhị phân theo cách thủ công ... –
Tôi chỉ biết trình xử lý đơn giản. do đó cảm ơn cho mẹo serialization. Tôi không biết nó trước ... –