中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java字節與字符流永久存儲json數據的示例分析

發布時間:2021-08-04 09:45:05 來源:億速云 閱讀:112 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關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數據的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

三河市| 临桂县| 温宿县| 临沭县| 五指山市| 宜兴市| 治县。| 买车| 万盛区| 土默特右旗| 股票| 子洲县| 望城县| 通州市| 沙田区| 营山县| 莒南县| 乳源| 江永县| 东乡| 嘉鱼县| 佳木斯市| 大新县| 通渭县| 恩平市| 巫溪县| 页游| 保定市| 巨鹿县| 凌海市| 连城县| 莲花县| 海安县| 敖汉旗| 新昌县| 镇赉县| 隆回县| 天津市| 汉川市| 江阴市| 巧家县|