您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Java字節與字符流永久存儲json數據的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
使用第三方json轉換工具
注意:jar包的導入不再贅述,詳見百度。
User類,定義兩種屬性,并創建構造方法與get和set方法
public class User { public String userName; //名字 public double balance; //金額 public User() { super(); } public User(String userName, double balance) { super(); this.userName = userName; this.balance = balance; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public double getBalance() { return balance; } public void setBalance(double balance) { this.balance = balance; } }
字節流的方式存儲json數據到txt文件
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; import com.alibaba.fastjson.JSON; public class ListFile { public static void main(String[] args){ List<User> list=new ArrayList<>(); list.add(new User("張三",100)); list.add(new User("張四",200)); list.add(new User("張五",300)); File file=new File("D:/uselist.txt"); //存儲的目標文件 FileOutputStream fos=null; BufferedOutputStream bos=null; try{ fos=new FileOutputStream(file); bos=new BufferedOutputStream(fos); String json=JSON.toJSONString(list); //對象轉換為json bos.write(json.getBytes("utf-8")); //json字符串寫入文件 bos.flush(); System.out.println("json數據寫入完成"); } catch(Exception e){ e.printStackTrace(); } finally{ try{ fos.close(); bos.close(); } catch(Exception e){ e.printStackTrace(); } } //讀取文件內容,并在控制臺輸出 String str=""; int num=0; FileInputStream fis=null; BufferedInputStream bis=null; byte buff[]=new byte[1024]; try{ fis=new FileInputStream(file); bis=new BufferedInputStream(fis); while((num=bis.read(buff))!=-1){ str+=new String(buff,"utf-8"); } System.out.println(str); //打印讀取文件的json字符串 } catch(Exception e){ e.printStackTrace(); } finally{ try{ fis.close(); bis.close(); } catch(Exception e){ e.printStackTrace(); } } //把讀取到的json數據再轉為對象,并在控制臺輸出 list=JSON.parseArray(str.trim(),User.class); //讀取到的json數據存在空格,trim方法去除 for(User obj:list){ System.out.println(obj.getUserName()+"\t"+obj.getBalance()); } } }
字符流的方式存儲json數據到txt文件
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.util.ArrayList; import java.util.List; import com.alibaba.fastjson.JSON; public class ListFile { public static void main(String[] args){ List<User> list=new ArrayList<>(); list.add(new User("張三",100)); list.add(new User("張四",200)); list.add(new User("張五",300)); File file=new File("D:/uselist.txt"); //存儲的目標文件 FileWriter fw=null; BufferedWriter bw=null; try{ fw=new FileWriter(file); bw=new BufferedWriter(fw); String json=JSON.toJSONString(list); //對象轉換為json bw.write(json); //json字符串寫入文件 bw.flush(); System.out.println("json數據寫入完成"); } catch(Exception e){ e.printStackTrace(); } finally{ try{ bw.close(); fw.close(); } catch(Exception e){ e.printStackTrace(); } } //讀取文件內容,并在控制臺輸出 String str=""; String s=""; FileReader fr=null; BufferedReader br=null; try{ fr=new FileReader(file); br=new BufferedReader(fr); while((s=br.readLine())!=null){ str+=s; } System.out.println(str); //打印讀取文件的json字符串 } catch(Exception e){ e.printStackTrace(); } finally{ try{ br.close(); fr.close(); } catch(Exception e){ e.printStackTrace(); } } //把讀取到的json數據再轉為對象,并在控制臺輸出 list=JSON.parseArray(str.trim(),User.class); for(User obj:list){ System.out.println(obj.getUserName()+"\t"+obj.getBalance()); } } }
運行結果:
json數據寫入完成 [{"balance":100,"userName":"張三"},{"balance":200,"userName":"張四"},{"balance":300,"userName":"張五"}] 張三 100.0 張四 200.0 張五 300.0
問題:為什么需要把對象轉為json再存儲?為什么不直接把對象存儲到文件中?使用json有什么好處?
一二問回答:如果直接把對象寫入文件中,會產生亂碼,需要轉換json字符串再存儲。
三問回答:json的優點,方便于傳輸,較少冗余的字符,易于轉換、閱讀。
關于“Java字節與字符流永久存儲json數據的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。