最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java字節(jié)與字符流永久存儲json數(shù)據(jù)

 更新時間:2018年02月22日 14:36:22   投稿:laozhang  
本篇文章給大家詳細講述了Java字節(jié)與字符流永久存儲json數(shù)據(jù)的方法,以及代碼分享,有興趣的參考學習下。

使用第三方j(luò)son轉(zhuǎn)換工具,阿里巴巴json轉(zhuǎn)換工具Fastjson1.2.7。

http://m.fzitv.net/softs/530842.html

注意:jar包的導入不再贅述,詳見百度。

User類,定義兩種屬性,并創(chuàng)建構(gòu)造方法與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;
	}
}

字節(jié)流的方式存儲json數(shù)據(jù)到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); //對象轉(zhuǎn)換為json
			bos.write(json.getBytes("utf-8")); //json字符串寫入文件
			bos.flush();
			System.out.println("json數(shù)據(jù)寫入完成");
		}
		catch(Exception e){
			e.printStackTrace();
		}
		finally{
			try{
				fos.close();
				bos.close();
			}
			catch(Exception e){
				e.printStackTrace();
			}
		}
		
		//讀取文件內(nèi)容,并在控制臺輸出
		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數(shù)據(jù)再轉(zhuǎn)為對象,并在控制臺輸出
		list=JSON.parseArray(str.trim(),User.class); //讀取到的json數(shù)據(jù)存在空格,trim方法去除
		for(User obj:list){
			System.out.println(obj.getUserName()+"\t"+obj.getBalance());
		}
	}
}

字符流的方式存儲json數(shù)據(jù)到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); //對象轉(zhuǎn)換為json
			bw.write(json); //json字符串寫入文件
			bw.flush();
			System.out.println("json數(shù)據(jù)寫入完成");
		}
		catch(Exception e){
			e.printStackTrace();
		}
		finally{
			try{
				bw.close();
				fw.close();
			}
			catch(Exception e){
				e.printStackTrace();
			}
		}
		
		//讀取文件內(nèi)容,并在控制臺輸出
		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數(shù)據(jù)再轉(zhuǎn)為對象,并在控制臺輸出
		list=JSON.parseArray(str.trim(),User.class);
		for(User obj:list){
			System.out.println(obj.getUserName()+"\t"+obj.getBalance());
		}
	}
}

運行結(jié)果:

json數(shù)據(jù)寫入完成
[{"balance":100,"userName":"張三"},{"balance":200,"userName":"張四"},{"balance":300,"userName":"張五"}]
張三	100.0
張四	200.0
張五	300.0

問題:為什么需要把對象轉(zhuǎn)為json再存儲?為什么不直接把對象存儲到文件中?使用json有什么好處?

一二問回答:如果直接把對象寫入文件中,會產(chǎn)生亂碼,需要轉(zhuǎn)換json字符串再存儲。

三問回答:json的優(yōu)點,方便于傳輸,較少冗余的字符,易于轉(zhuǎn)換、閱讀。

相關(guān)文章

  • 詳解Spring Boot整合Mybatis實現(xiàn) Druid多數(shù)據(jù)源配置

    詳解Spring Boot整合Mybatis實現(xiàn) Druid多數(shù)據(jù)源配置

    本篇文章主要介紹了詳解Spring Boot整合Mybatis實現(xiàn) Druid多數(shù)據(jù)源配置,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • 零基礎(chǔ)寫Java知乎爬蟲之進階篇

    零基礎(chǔ)寫Java知乎爬蟲之進階篇

    前面幾篇文章,我們都是簡單的實現(xiàn)了java爬蟲抓取內(nèi)容的問題,那么如果遇到復雜情況,我們還能繼續(xù)那么做嗎?答案當然是否定的,之前的僅僅是入門篇,都是些基礎(chǔ)知識,給大家練手用的,本文我們就來點高大上的東西
    2014-11-11
  • 使用 Java 將 byte[] 轉(zhuǎn)換為 File 對象并上傳到外部服務器的方法(最新推薦)

    使用 Java 將 byte[] 轉(zhuǎn)換為 File 對象并上

    本文展示了如何通過 Java 和 Spring 來處理圖像文件的獲取、保存和上傳,通過 RestTemplate 獲取字節(jié)數(shù)組并將其轉(zhuǎn)換為 File 對象,可以輕松實現(xiàn)從遠程 URL 獲取文件并將其上傳到外部服務器,感興趣的朋友一起看看吧
    2025-03-03
  • Java實現(xiàn)SMS短信通發(fā)送手機驗證碼案例講解

    Java實現(xiàn)SMS短信通發(fā)送手機驗證碼案例講解

    這篇文章主要介紹了Java實現(xiàn)SMS短信通發(fā)送手機驗證碼案例講解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 自定義注解+Spel實現(xiàn)分布式鎖方式

    自定義注解+Spel實現(xiàn)分布式鎖方式

    這篇文章主要介紹了自定義注解+Spel實現(xiàn)分布式鎖方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • SpringBoot項目創(chuàng)建使用+配置文件+日志文件詳解

    SpringBoot項目創(chuàng)建使用+配置文件+日志文件詳解

    Spring的出現(xiàn)是為了簡化 Java 程序開發(fā),而 SpringBoot 的出現(xiàn)是為了簡化 Spring 程序開發(fā),這篇文章主要介紹了SpringBoot項目創(chuàng)建使用+配置文件+日志文件,需要的朋友可以參考下
    2023-02-02
  • idea配置多環(huán)境啟動方式dev、test、prod

    idea配置多環(huán)境啟動方式dev、test、prod

    這篇文章主要介紹了idea配置多環(huán)境啟動方式dev、test、prod,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Java實現(xiàn)批量導入excel表格數(shù)據(jù)到數(shù)據(jù)庫中的方法

    Java實現(xiàn)批量導入excel表格數(shù)據(jù)到數(shù)據(jù)庫中的方法

    這篇文章主要介紹了Java實現(xiàn)批量導入excel表格數(shù)據(jù)到數(shù)據(jù)庫中的方法,結(jié)合實例形式詳細分析了java導入Excel數(shù)據(jù)到數(shù)據(jù)庫的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-10-10
  • 使用XSD校驗Mybatis的SqlMapper配置文件的方法(2)

    使用XSD校驗Mybatis的SqlMapper配置文件的方法(2)

    這篇文章主要介紹了使用XSD校驗Mybatis的SqlMapper配置文件的方法(2)的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-11-11
  • Springboot整合Activiti操作詳解

    Springboot整合Activiti操作詳解

    這篇文章主要給大家詳細介紹了Springboot整合Activiti的操作流程,文中流程步驟和代碼示例介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2023-07-07

最新評論

平罗县| 镇沅| 北海市| 来凤县| 拉孜县| 阿克苏市| 彭泽县| 新干县| 攀枝花市| 招远市| 青州市| 虹口区| 镇平县| 饶河县| 定陶县| 武穴市| 大余县| 青浦区| 白水县| 荔浦县| 晋江市| 遵化市| 伊通| 泸定县| 泰宁县| 周至县| 临沂市| 榆社县| 利津县| 嵩明县| 开化县| 株洲县| 达孜县| 迁西县| 乌拉特前旗| 宁远县| 咸阳市| 澳门| 寻甸| 清远市| 海口市|