一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - java讀取文件內(nèi)容,解析Json格式數(shù)據(jù)方式

java讀取文件內(nèi)容,解析Json格式數(shù)據(jù)方式

2021-12-21 13:39W-大泡泡 Java教程

這篇文章主要介紹了java讀取文件內(nèi)容,解析Json格式數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

java讀取文件內(nèi)容,解析Json格式數(shù)據(jù)

一、讀取txt文件內(nèi)容(Json格式數(shù)據(jù))

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static String reader(String filePath) {
    try {
        File file = new File(filePath);
        if (file.isFile() && file.exists()) {
            InputStreamReader read = new InputStreamReader(new FileInputStream(file), "UTF-8");
            BufferedReader bufferedReader = new BufferedReader(read);
            String lineTxt = bufferedReader.readLine();
            while (lineTxt != null) {
                return lineTxt;
            }
        }
    } catch (UnsupportedEncodingException | FileNotFoundException e) {
        System.out.println("Cannot find the file specified!");
        e.printStackTrace();
    } catch (IOException e) {
        System.out.println("Error reading file content!");
        e.printStackTrace();
    }
    return null;
}

二、解析處理Json格式數(shù)據(jù)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private static void process(String txtStr) {
    JSONObject json = JSONObject.fromObject(txtStr);
    JSONArray datas = json.getJSONObject("data").getJSONArray("rows");
    List<Map<String, Object>> list = new ArrayList<>();
    for (int i = 0; i < datas.length(); i++) {
        Map<String, Object> map = new HashMap<>();
        JSONObject obj = datas.getJSONObject(i).getJSONObject("cells");
        String name = obj.getString("weibo_name");
        String code = obj.getString("weibo_id");
        String url = BASE_URL + obj.getString("url");
        map.put("name", name);
        map.put("code", code);
        map.put("url", url);
        list.add(map);
    }
    if (!list.isEmpty()) {
        insert(list);
    }
}

三、結(jié)果存入數(shù)據(jù)庫

?
1
2
3
4
5
private static void insert(List<Map<String, Object>> list) {
    for (Map<String, Object> map : list) {
        //遍歷數(shù)據(jù),寫存儲方法
    }
}

四、測試

?
1
2
3
4
5
6
7
8
9
10
public static void main(String[] args) {
    String filePath = "E:\\wugang\\data\\weiboyi\\wechat.txt";
    String txtStr = reader(filePath);
    if (txtStr != null) {
        process(txtStr);
    } else {
        System.out.println("Read the content is empty!");
    }
    System.out.println("--- end ---");
}

java 讀取txt文件中的json數(shù)據(jù),進行導(dǎo)出

txt文件中的內(nèi)容如下

以下代碼可直接運行

java讀取文件內(nèi)容,解析Json格式數(shù)據(jù)方式

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
package com.hwt.count.test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.CellRangeAddress;
import org.apache.poi.hssf.util.HSSFColor;
import net.sf.json.JSONObject;
public class Testaa {
    public static void main(String[] args) {
        try {
            String path = "C:/Users/dell/Desktop/test.txt";
            File file = new File(path);
            InputStreamReader isr = new InputStreamReader(new FileInputStream(file),"GBK");
            BufferedReader br = new BufferedReader(isr);
            String content = br.readLine() ;
            br.close();
            isr.close();
            content = content.substring(2, content.length()-2);
            content = content.replace("},{", ";");
            String[] arrContent = content.split(";");
            
            //設(shè)置列頭名稱和表體數(shù)據(jù)
            String[] rowsName = new String[]{"code_type","code","name"};
            List<Object[]> dataList = new ArrayList<Object[]>();
            
            for(String arrc : arrContent){
                JSONObject jsonObj = JSONObject.fromObject("{"+arrc+"}");
                String code = jsonObj.getString("code");
                String name = jsonObj.getString("name");
                Object[] obj = new Object[rowsName.length];
                obj[0] = "TYPE";
                obj[1] = code;
                obj[2] = name;
                dataList.add(obj);
            }
            //設(shè)置列頭名稱和表體數(shù)據(jù)
            HSSFWorkbook workbook = setWorkBookDate(dataList,rowsName);
            try {
                // 將workbook對象輸出到文件test.xls
                FileOutputStream fos = new FileOutputStream("C:/Users/dell/Desktop/test.xls");
                workbook.write(fos);
                fos.flush(); // 緩沖
                fos.close(); // 關(guān)閉流
            }catch (Exception e1) {
                e1.printStackTrace();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    private static HSSFWorkbook setWorkBookDate(List<Object[]>  dataList,String[] rowsName){
        
        //創(chuàng)建工作簿對象
        HSSFWorkbook workbook = new HSSFWorkbook();
        //創(chuàng)建工作表,設(shè)置當前頁名稱
        HSSFSheet sheet = workbook.createSheet("測試");
        //設(shè)置默認行高
        sheet.setDefaultRowHeight((short)350);
        //合并表頭表尾的單元格
        /*sheet.addMergedRegion(new CellRangeAddress(0, 2, 0, 3));
        sheet.addMergedRegion(new CellRangeAddress(3, 3, 0, 3));
        //凍結(jié)行
        workbook.getSheetAt(0).createFreezePane(0, 4);
        RegionUtil.setBorderBottom(1, new CellRangeAddress(3, 3, 0, 3), workbook.getSheetAt(0), workbook);//設(shè)置邊框
*/        // 獲取表頭樣式對象
        // 獲取表體樣式對象
        HSSFCellStyle style = getCommonStyle(workbook);
        
        // 定義所需列數(shù)
        int columnNum = rowsName.length;
        //創(chuàng)建列頭
        HSSFRow rowHead = sheet.createRow(0); 
        for(int n = 0;n < columnNum;n++){
            HSSFCell cellRow = rowHead.createCell(n,HSSFCell.CELL_TYPE_STRING);//創(chuàng)建列頭對應(yīng)個數(shù)的單元格               
            cellRow.setCellValue(rowsName[n]);//設(shè)置列頭單元格的值                       
            cellRow.setCellStyle(style);//設(shè)置列頭單元格樣式                       
        }
        
        //將查詢出的數(shù)據(jù)設(shè)置到sheet對應(yīng)的單元格中
        for(int i=0;i<dataList.size();i++){
            Object[] obj =new Object[dataList.get(i).length];
            obj[0] = dataList.get(i)[0];
            obj[1] = dataList.get(i)[1];
            obj[2] = dataList.get(i)[2];
            HSSFRow row = sheet.createRow(i+1);//創(chuàng)建所需的行數(shù)
            for(int j = 0; j < obj.length; j++){
                HSSFCell cell = row.createCell(j,HSSFCell.CELL_TYPE_STRING);//設(shè)置單元格的數(shù)據(jù)類型  
                if(!"".equals(obj[j]) && obj[j] != null){
                    cell.setCellValue(obj[j].toString());//設(shè)置單元格的值                       
                }else{
                    cell.setCellValue("");//設(shè)置單元格的值為空字符串
                }
                cell.setCellStyle(style);//設(shè)置單元格樣式                                   
            }
        }
        //讓列寬隨著導(dǎo)出的列長自動適應(yīng)
        for (int colNum = 0; colNum < columnNum; colNum++) {
            int columnWidth = sheet.getColumnWidth(colNum) / 256;
            for (int rowNum = 0; rowNum < sheet.getLastRowNum(); rowNum++) {
                HSSFRow currentRow;
                //當前行未被使用過
                if (sheet.getRow(rowNum) == null) {
                    currentRow = sheet.createRow(rowNum);
                } else {
                    currentRow = sheet.getRow(rowNum);
                }
                if (currentRow.getCell(colNum) != null) {
                    HSSFCell currentCell = currentRow.getCell(colNum);
                    if(currentCell != null && !"".equals(currentCell)){
                        if (currentCell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
                            int length = currentCell.getStringCellValue().getBytes().length;
                            if (columnWidth < length) {
                                columnWidth = length;
                            }
                        }
                    }
                }
            }
            if(colNum == 0){
                //設(shè)置表體第一列的寬度
                sheet.setColumnWidth(colNum, (columnWidth+4) * 400);
            }else{
                //設(shè)置表體其他列的寬度
                sheet.setColumnWidth(colNum, (columnWidth+4) * 400);
            }
        }
        return workbook;
    }
    public static HSSFCellStyle getCommonStyle(HSSFWorkbook workbook) {
      // 設(shè)置字體
      HSSFFont font = workbook.createFont();
      //設(shè)置字體大小
      font.setFontHeightInPoints((short)11);
      //字體加粗
      //font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
      //設(shè)置字體名字
      font.setFontName("Courier New");
      //設(shè)置樣式;
      HSSFCellStyle style = workbook.createCellStyle();
      //設(shè)置底邊框;
      style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
      //設(shè)置底邊框顏色; 
      style.setBottomBorderColor(HSSFColor.BLACK.index);
      //設(shè)置左邊框;  
      style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
      //設(shè)置左邊框顏色;
      style.setLeftBorderColor(HSSFColor.BLACK.index);
      //設(shè)置右邊框;
      style.setBorderRight(HSSFCellStyle.BORDER_THIN);
      //設(shè)置右邊框顏色;
      style.setRightBorderColor(HSSFColor.BLACK.index);
      //設(shè)置頂邊框;
      style.setBorderTop(HSSFCellStyle.BORDER_THIN);
      //設(shè)置頂邊框顏色; 
      style.setTopBorderColor(HSSFColor.BLACK.index);
      //在樣式用應(yīng)用設(shè)置的字體; 
      style.setFont(font);
      //設(shè)置自動換行;
      style.setWrapText(false);
      //設(shè)置水平對齊的樣式為居中對齊; 
      style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
      //設(shè)置垂直對齊的樣式為居中對齊;
      style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
      return style;
    }
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://blog.csdn.net/u011389474/article/details/52700443

延伸 · 閱讀

精彩推薦
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經(jīng)有好久沒有升過級了。升級完畢重啟之后,突然發(fā)現(xiàn)好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程xml與Java對象的轉(zhuǎn)換詳解

    xml與Java對象的轉(zhuǎn)換詳解

    這篇文章主要介紹了xml與Java對象的轉(zhuǎn)換詳解的相關(guān)資料,需要的朋友可以參考下...

    Java教程網(wǎng)2942020-09-17
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關(guān)于小米推送Java代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩(wěn)中求8032021-07-12
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java實現(xiàn)搶紅包功能

    Java實現(xiàn)搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現(xiàn)搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發(fā)項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發(fā)現(xiàn)了對于集合操作轉(zhuǎn)換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關(guān)于Java8中S...

    阿杜7482021-02-04
  • Java教程Java BufferWriter寫文件寫不進去或缺失數(shù)據(jù)的解決

    Java BufferWriter寫文件寫不進去或缺失數(shù)據(jù)的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數(shù)據(jù)的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
主站蜘蛛池模板: 国产精品福利短视在线播放频 | 国内在线播放 | 情欲综合网| 国产99热99| 超级乱淫变态伦短篇小说全集 | 欧美老人与小伙子性生交 | 双性总裁被调教1v1 双性双根 | 色天天综合色天天看 | 手机av影院| 免费老外的毛片清高 | 日本无遮挡吸乳视频看看 | 欧美大片一区 | gav男人天堂 | 十大网站免费货源 | free极度另类性欧美 | 狠狠色96视频 | 免费一区二区 | 成人国产第一区在线观看 | b站免费| 秋霞一级毛片 | 91麻豆精品国产91久久久 | 国产成人小视频在线观看 | 日韩成人在线影院 | 四虎e234hcom | 国产色司机在线视频免费观看 | 国产精品视频二区不卡 | 亚洲精品国产精麻豆久久99 | 兽皇日本 | 亚洲精品黄色 | 91精品大神国产在线播放 | 国产肥臀| 紧身牛仔裤美女被啪啪久久网 | 国产男人搡女人免费视频 | 爱福利视频一区二区 | 亚欧毛片基地国产毛片基地 | 范冰冰特黄xx大片 | 金发美女与黑人做爰 | 色琪琪原网站亚洲香蕉 | 国产成人精品免费大全 | 国产啪精品视频网给免丝袜 | 91天堂影院|