티스토리 뷰

문제==========================================================

구청별 폴더 내 검색
구청/2021/DATA/하수관번호/img/hole.js

폴더 지정해서 구청/2021/DATA/ 디렉토리 file[] 
for()
1번째 하수관번호 검색
"구청/2021/DATA/ " + 디렉토리 file[i].getName() + "/img/hole.js"
파일을 읽어

json을 읽을 수 있는 라이브러리 GJosn 
id를 뽑아
중복확인
메모리에 저장
set 1, 1, 1, 2, 3,2, 1, 
1, 2, 3

전역 Set에 있는지 없는지 확인
있으면 출력
전역 Set에 저장

2번째 하수관번호 검색

"구청/2021/DATA/ " + 디렉토리 file[i].getName() + "/img/hole.js"
파일을 읽어

json을 읽을 수 있는 라이브러리 GJosn 
id를 뽑아
중복확인
메모리에 저장

set 1,4, 5, 6,2, 3
1,2,3,4,5

전역 Set에 있는지 없는지 확인
있으면 출력
전역 Set에 저장

  


ex)
SB02/2021/DATA/1-1/img/hole.js <- json

읽어서 id를 찾아 
ex) "id": "1-01-001A", -> 1-01-001A
1-01-002A
1-01-003A

구조체에 저장

구청내 중복되는 id 체크

중복이 되면 경로, id 출력
============================================================


hole.js 파일은 아래와 같은 형식으로 되어있는데,

이 json파일을 읽어서 키가 id인 데이터 값이 일치하는지 확인해야한다.

이때 Gson이라는 라이브러리를 이용했다.

 

hole.js 예시

{
  "data": [
    {
      "minx": -227924.4980069133,
      "radianz": -0.7425526552537474,
      "height_top": 2318,
      "maxx": -227900.1442984333,
      "x": 197128.22,
      "width": 12177,
      "index": "000",
      "y": 551865.242,
      "z": 33.035,
      "height_right": 1132,
      "id": "1-01-001A",
      "height_left": 1132
    },
    {
      "minx": -227924.4980069133,
      "radianz": -0.7425526552537474,
      "height_top": 2318,
      "maxx": -227900.1442984333,
      "x": 197130.209,
      "width": 12177,
      "index": "000",
      "y": 551863.711,
      "z": 32.972,
      "height_right": 1132,
      "id": "1-01-002A",
      "height_left": 1132
    }
}

 

내가 짠 코드

package com.jwkim.testProject;

import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.stream.JsonReader;

public class JsonFileReader3 {
	
	static HashSet<String> idSet1 = new HashSet<>();
	static HashSet<String> idSet2 = new HashSet<>();
	
	public static void main(String[] args) throws Exception{
		
		 /*
			1. DATA폴더 하위의 하수관로 폴더 이름 읽기
			2. 첫번째 하수관로의 hole.js 파일안에 id 값을 읽기
			3. 읽어온 id 값을 구조체에 저장하댜
			4. 구청내 중복되는 id값을 체크  	
			5. 중복되면 경로와 id값을 출력
		 */
		System.out.println("JsonFileReader2");
		

		// 1.  
		String filePath1_ = "E:\\20230117\\test\\SB04\\2021\\DATA\\";
		String restPath = "\\img\\hole.js";
		
		File idnPathList_ = new File(filePath1_);
		String[] idnPathList = idnPathList_.list(); 
		
		
		// 2.
		for(int k=0; k<idnPathList.length; k++) {		
			String set1finalPath = filePath1_ + idnPathList[k] + restPath;	
			readData(set1finalPath);
			dataInput(idSet1, idSet2);
			
			for(int i=k; i<idnPathList.length; i++) {		
				if(k != i) {
				System.out.println("==================");
				System.out.println(idnPathList[k]);
				System.out.println(idnPathList[i]);
				System.out.println("==================");
				
				String set2finalPath = filePath1_ + idnPathList[i] + restPath;	
				readData(set2finalPath);
				overlapChk(idSet1, idSet2, set2finalPath);
				}
				
			
			}
		}																	
		
	}
	
	// set2에 set1 데이터 넣기
	private static void dataInput(HashSet<String> inputSet1, HashSet<String> inputSet2)  throws Exception{
		Iterator<String> itSet1 = inputSet1.iterator();
		while(itSet1.hasNext()) {
			String itSet1Data = itSet1.next();
			inputSet2.add(itSet1Data);
		}
	}
	
	// set1과 set2에 데이터가 겹치는게 있는지 찾기
	private static void overlapChk(HashSet<String> inputSet1, HashSet<String> inputSet2, String finalPathOut)  throws Exception{
		Iterator<String> it2 = inputSet1.iterator();
		while(it2.hasNext()) {
			String test = it2.next();
			if(inputSet2.contains(test)){	//set2값이 set1에 있는지 확인
				System.out.println("중복데이터 있음  " + test + "  " + finalPathOut);
			}else {
				System.out.println("중복데이터 없음");
				
			}
		}
	}
	
	
	// json을 읽어와서 set에 넣기
	private static void readData(String finalPath)  throws Exception{
		// 여기부터 Gson
		File file = new File(finalPath);
		FileReader fr = new FileReader(file);			
		Gson gson = new GsonBuilder().setPrettyPrinting().create();
		JsonReader jr = new JsonReader(fr);
		Map<String, Object> map = gson.fromJson(jr, HashMap.class);
		fr.close();
		jr.close();
		
		// 3. 
		idSet1.clear();
		ArrayList<Map> list = (ArrayList<Map>) map.get("data"); 
		for(int j=0; j<list.size(); j++) {
			// id값을 set에 저장
			idSet1.add(list.get(j).get("id").toString());
		}
		
		map.put("data", new ArrayList<Map>());
		gson.toJson(map);
	
	}
	
}

 

 

 

 

 

 

 

결과==========================================================

JsonFileReader2
==================
1-1
1-1-1
==================
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
중복데이터 없음
==================
1-1
1-2
==================
중복데이터 있음  1-01-050A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-030A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-042A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-010A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-054A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-022A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-034A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-035A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-003A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-047A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-015A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-027A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-039A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-007A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-019A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-051A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-031A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-043A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-011A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-055A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-023A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-024A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-036A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-004A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-048A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-016A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-028A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-008A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-040A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-052A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-020A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-032A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-044A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-012A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-056A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-057A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-025A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-037A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-005A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-049A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-017A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-029A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-009A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-041A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-053A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-021A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-033A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-001A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-045A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-002A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-046A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-014A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-058A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-026A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-038A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-006A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-018A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
==================
1-1-1
1-2
==================
중복데이터 있음  1-01-050A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-030A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-042A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-010A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-054A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-022A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-034A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-035A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-003A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-047A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-015A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-027A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-039A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-007A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-019A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-051A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-031A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-043A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-011A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-055A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-023A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-024A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-036A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-004A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-048A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-016A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-028A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-008A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-040A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-052A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-020A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-032A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-044A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-012A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-056A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-057A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-025A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-037A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-005A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-049A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-017A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-029A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-009A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-041A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-053A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-021A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-033A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-001A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-045A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-002A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-046A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-014A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-058A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-026A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-038A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-006A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js
중복데이터 있음  1-01-018A  E:\20230117\test\SB02\2021\DATA\1-2\img\hole.js

 

 

'끄적이기' 카테고리의 다른 글

[에러] 로컬에서는 잘 되는데 서버는 안돌아감  (0) 2023.09.27
TESTEST  (0) 2023.01.13
postgresql mysql  (0) 2023.01.10
오라클  (0) 2023.01.10
flaticon  (0) 2022.12.29
댓글