1. 程式人生 > >解析.txt檔案入庫

解析.txt檔案入庫

前段時間遇到這樣需求,需要從資料夾中讀取.txt檔案按照一定規則解析入庫,並且在tomcat開啟時,開5個執行緒共同去解析檔案入庫

解析程式碼如下:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.hrtel.analyzeMR.entity.XDR_General_purpose;
import com.hrtel.analyzeMR.entity.XDR_HTTP;
import com.hrtel.analyzeMR.entity.XDR_Instant_Communication;
import com.hrtel.analyzeMR.entity.XDR_S1_MME;
import com.hrtel.analyzeMR.entity.XDR_VoIP;
import com.hrtel.analyzeMR.service.AnalyzeXdrService;

public class AnalyzeXdrController {
	//在springmvc中非controller類中呼叫service介面,以獲取springmvc容器方法實現
	ApplicationContext ac = new ClassPathXmlApplicationContext("spring-mybatis.xml");
	AnalyzeXdrService analyzeXdrService = (AnalyzeXdrService) ac.getBean("analyzeXdrService");
	
	/**
	 * 啟動一個執行緒,定時去讀取檔案
	 * ScheduledExecutorService定時週期執行指定任務
	 */
	public void realTimeCommunication(){
		ScheduledExecutorService exec = Executors.newScheduledThreadPool(1);
		//啟動一個執行緒每10秒鐘呼叫一次讀取檔案的方法
		exec.scheduleWithFixedDelay(new Runnable(){
			public void run(){
				readInstantCommunication();
			}
		},0, 10, TimeUnit.SECONDS);
	}
	
	public void realTimeMmeXdr(){
		ScheduledExecutorService exec = Executors.newScheduledThreadPool(1);
		//啟動一個執行緒每10秒鐘呼叫一次讀取檔案的方法
		exec.scheduleWithFixedDelay(new Runnable(){
			public void run(){ 
				readSMmeXdr();
			}
		},0, 10, TimeUnit.SECONDS);
	}
	
	public void realTimeHttpXdr(){
		ScheduledExecutorService exec = Executors.newScheduledThreadPool(1);
		//啟動一個執行緒每10秒鐘呼叫一次讀取檔案的方法
		exec.scheduleWithFixedDelay(new Runnable(){
			public void run(){
				readHttpXdr();
			}
		},0, 10, TimeUnit.SECONDS);
	}
	
	public void realTimeVoipXdr(){
		ScheduledExecutorService exec = Executors.newScheduledThreadPool(1);
		//啟動一個執行緒每10秒鐘呼叫一次讀取檔案的方法
		exec.scheduleWithFixedDelay(new Runnable(){
			public void run(){
				readVoipXdr();
			}
		},0, 10, TimeUnit.SECONDS);
	}
	
	public void realTimePurposeXdr(){
		ScheduledExecutorService exec = Executors.newScheduledThreadPool(1);
		//啟動一個執行緒每10秒鐘呼叫一次讀取檔案的方法
		exec.scheduleWithFixedDelay(new Runnable(){
			public void run(){
				readGeneralPurposeXdr();
			}
		},0, 10, TimeUnit.SECONDS);
	}
	
	/**
	 * 解析即時通訊
	 */
	public void  readInstantCommunication(){
		BufferedReader br;
		InputStreamReader inputStreamReader;
		FileInputStream fileInputStream;
		
//		String uri = "E:/xdr/jishitongxin";
		String uri = "/sdb/xdr_msg";
		List<XDR_Instant_Communication>	list = new ArrayList<XDR_Instant_Communication>();
		//計時
		SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:SS");   
		TimeZone t = sdf.getTimeZone();   
		t.setRawOffset(0);   
		sdf.setTimeZone(t);   
		Long startTime = System.currentTimeMillis();  
		//計時
		
		File mrefile = new File(uri);   
		File[] array = mrefile.listFiles();
		 for(int i=0;i<array.length;i++){
			 File file = array[i];
			 String inFileName = array[i].getPath();
			 System.out.println("路徑"+inFileName);
			 try {
					fileInputStream = new FileInputStream(inFileName);
					inputStreamReader =new InputStreamReader(fileInputStream);
					br = new BufferedReader(inputStreamReader);
					String line = "";
						while((line=br.readLine())!=null){
							String[] str = line.split("\\|");
							if(str.length == 56){
								XDR_Instant_Communication  ic = new XDR_Instant_Communication(str[0],str[1],str[2], str[3], str[4], str[5], str[6], str[7], str[8], str[9], str[10], str[11], str[12], str[13], str[14], 
										str[15], str[16], str[17], str[18], str[19], str[20], str[21], str[22], str[23], str[24], str[25], str[26], str[27], str[28], str[29], str[30], str[31], str[32], str[33], 
										str[34], str[35], str[36], str[37], str[38], str[39], str[40], str[41], str[42], str[43], str[44], str[45], str[46], str[47], str[48], str[49], str[50], str[51], str[52], 
										str[53], str[54], str[55]); 
								list.add(ic);
							}
						if(list.size()==1000){
							System.out.println(list.size());
							analyzeXdrService.insertInstantCommuniction(list);
							list.clear();
						}
					}
					if (list.size()>0){
						analyzeXdrService.insertInstantCommuniction(list);
						list.clear();
					}
					System.out.println("上傳成功!!");
					Long endTime = System.currentTimeMillis();   
					System.out.println("用時:" + sdf.format(new Date(endTime - startTime)));  
					br.close();
					inputStreamReader.close();
					fileInputStream.close();
					if (file.exists()){
						Boolean flag = file.delete();
						if (flag){
							System.out.println("檔案刪除成功");
						}
					}
				} catch (Exception e) {
					e.printStackTrace();
				}
		 }
	}
	
	/**
	 * 解析S1_MME_XDR
	 */
	public void  readSMmeXdr(){
		BufferedReader br;
		InputStreamReader inputStreamReader;
		FileInputStream fileInputStream;
		
//		String uri = "F:\\xdr\\xianMME2015111800001";
		String uri = "/sdb/xdr_s1mme";
		List<XDR_S1_MME> list = new ArrayList<XDR_S1_MME>();
		//計時
		SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:SS");   
		TimeZone t = sdf.getTimeZone();   
		t.setRawOffset(0);   
		sdf.setTimeZone(t);   
		Long startTime = System.currentTimeMillis();  
		//計時
		
		File mrefile = new File(uri);   
		File[] array = mrefile.listFiles();
		 for(int i=0;i<array.length;i++){
			 String inFileName = array[i].getPath();
			 File file = array[i];
			 System.out.println("路徑"+inFileName);
			 try {
					fileInputStream = new FileInputStream(inFileName);
					inputStreamReader =new InputStreamReader(fileInputStream);
					br = new BufferedReader(inputStreamReader);
					String line = "";
					String srg[] = new String[85];  //初始化一下陣列長度,為後面資料補空
						while((line=br.readLine())!=null){
							String[] str = line.split("\\,");
							if (str.length > 0){
								for (int j = 0; j<str.length; j++){
									srg[j] = str[j];
								}
							}
							XDR_S1_MME sm = new XDR_S1_MME(srg[0],srg[1], srg[2], srg[3], srg[4], srg[5], srg[6], srg[7], srg[8], srg[9], 
									srg[10], srg[11], srg[12], srg[13], srg[14], srg[15], srg[16], srg[17], srg[18], srg[19], srg[20], srg[21], srg[22], 
									srg[23], srg[24], srg[25], srg[26], srg[27], srg[28], srg[29], srg[30], srg[31], srg[32], srg[33], srg[34], 
									srg[35], srg[36], srg[37], srg[38], srg[39], srg[40], srg[41], srg[42], srg[43], srg[44], srg[45], srg[46],
									srg[47], srg[48], srg[49], srg[50], srg[51], srg[52], srg[53], srg[54], srg[55], srg[56], srg[57], srg[58], 
									srg[59], srg[60], srg[61], srg[62], srg[63], srg[64], srg[65], srg[66], srg[67], srg[68], srg[69], srg[70], srg[71],
									srg[72], srg[73], srg[74], srg[75], srg[76], srg[77], srg[78], srg[79], srg[80], srg[81], srg[82], srg[83],
									srg[84]);
							list.add(sm);
						if(list.size()==100){
							analyzeXdrService.insertSMmeXdr(list);
							list.clear();
						}
					}
					analyzeXdrService.insertSMmeXdr(list);
					list.clear();
					System.out.println("上傳成功!!");
					Long endTime = System.currentTimeMillis();   
					System.out.println("用時:" + sdf.format(new Date(endTime - startTime)));   
					br.close();
					inputStreamReader.close();
					fileInputStream.close();
					boolean flag = file.delete();
					if (flag){
						System.out.println("檔案刪除成功");
					}
				} catch (Exception e) {
					e.printStackTrace();
				}
		 }
	}
	
	/**
	 * 解析HTTP_XDR
	 */
	public void  readHttpXdr(){
		BufferedReader br;
		InputStreamReader inputStreamReader;
		FileInputStream fileInputStream;
		
//		String uri = "F:\\xdr\\httpxian1032015111800002";
		String uri = "/sdb/xdr_http";
		List<XDR_HTTP> list = new ArrayList<XDR_HTTP>();
		//計時
		SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:SS");   
		TimeZone t = sdf.getTimeZone();   
		t.setRawOffset(0);   
		sdf.setTimeZone(t);   
		Long startTime = System.currentTimeMillis();  
		//計時
		
		File mrefile = new File(uri);   
		File[] array = mrefile.listFiles();
		 for(int i=0;i<array.length;i++){
			 String inFileName = array[i].getPath();
			 File file = array[i];
			 System.out.println("路徑"+inFileName);
			 try {
					fileInputStream = new FileInputStream(inFileName);
					inputStreamReader =new InputStreamReader(fileInputStream);
					br = new BufferedReader(inputStreamReader);
					String line = "";
					String srg[] = new String[85];  //初始化一下陣列長度,為後面資料補空
						while((line=br.readLine())!=null){
							String[] str = line.split("\\|");
							if (str.length > 0){
								for (int j = 0; j<str.length; j++){
									srg[j] = str[j];
								}
							}
							XDR_HTTP sm = new XDR_HTTP(srg[0],srg[1], srg[2], srg[3], srg[4], srg[5], srg[6], srg[7], srg[8], srg[9], 
									srg[10], srg[11], srg[12], srg[13], srg[14], srg[15], srg[16], srg[17], srg[18], srg[19], srg[20], srg[21], srg[22], 
									srg[23], srg[24], srg[25], srg[26], srg[27], srg[28], srg[29], srg[30], srg[31], srg[32], srg[33], srg[34], 
									srg[35], srg[36], srg[37], srg[38], srg[39], srg[40], srg[41], srg[42], srg[43], srg[44], srg[45], srg[46],
									srg[47], srg[48], srg[49], srg[50], srg[51], srg[52], srg[53], srg[54], srg[55], srg[56], srg[57], srg[58], 
									srg[59], srg[60], srg[61], srg[62], srg[63], srg[64], srg[65], srg[66], srg[67], srg[68], srg[69], srg[70], srg[71],
									srg[72], srg[73], srg[74], srg[75]);
							list.add(sm);
						if(list.size()==100){
							System.out.println(list.size());
							analyzeXdrService.insertHttpXdr(list);
							list.clear();
						}
					}
					analyzeXdrService.insertHttpXdr(list);
					list.clear();
					System.out.println("上傳成功!!");
					Long endTime = System.currentTimeMillis();   
					System.out.println("用時:" + sdf.format(new Date(endTime - startTime)));  
					br.close();
					inputStreamReader.close();
					fileInputStream.close();
					boolean flag = file.delete();
					if (flag){
						System.out.println("檔案刪除成功");
					}
				} catch (Exception e) {
					e.printStackTrace();
				}
		 }
	}
	
	/**
	 * 解析VoIp_XDR
	 */
	public void  readVoipXdr(){
		BufferedReader br;
		InputStreamReader inputStreamReader;
		FileInputStream fileInputStream;
		
//		String uri = "F:\\xdr\\voip";
		String uri = "/sdb/xdr_voip";
		List<XDR_VoIP> list = new ArrayList<XDR_VoIP>();
		//計時
		SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:SS");   
		TimeZone t = sdf.getTimeZone();   
		t.setRawOffset(0);   
		sdf.setTimeZone(t);   
		Long startTime = System.currentTimeMillis();  
		//計時
		int num = 0;
		File mrefile = new File(uri);   
		File[] array = mrefile.listFiles();
		 for(int i=0;i<array.length;i++){
			 String inFileName = array[i].getPath();
			 File file = array[i];
			 System.out.println("路徑"+inFileName);
			 try {
					fileInputStream = new FileInputStream(inFileName);
					inputStreamReader =new InputStreamReader(fileInputStream);
					br = new BufferedReader(inputStreamReader);
					String line = "";
					String srg[] = new String[59];  //初始化一下陣列長度,為後面資料補空
						while((line=br.readLine())!=null){
							String[] str = line.split("\\|");
							if (str.length > 0){
								for (int j = 0; j<str.length; j++){
									srg[j] = str[j];
								}
							}
							XDR_VoIP sm = new XDR_VoIP(srg[0],srg[1], srg[2], srg[3], srg[4], srg[5], srg[6], srg[7], srg[8], srg[9], 
									srg[10], srg[11], srg[12], srg[13], srg[14], srg[15], srg[16], srg[17], srg[18], srg[19], srg[20], srg[21], srg[22], 
									srg[23], srg[24], srg[25], srg[26], srg[27], srg[28], srg[29], srg[30], srg[31], srg[32], srg[33], srg[34], 
									srg[35], srg[36], srg[37], srg[38], srg[39], srg[40], srg[41], srg[42], srg[43], srg[44], srg[45], srg[46],
									srg[47], srg[48], srg[49], srg[50], srg[51], srg[52], srg[53], srg[54], srg[55], srg[56], srg[57], srg[58]
									);
							list.add(sm);
						if(list.size()==100){
							System.out.println(list.size());
							analyzeXdrService.insertVoipXdr(list);
							list.clear();
						}
					}
					analyzeXdrService.insertVoipXdr(list);
					list.clear();
					Long endTime = System.currentTimeMillis();   
					System.out.println("用時:" + sdf.format(new Date(endTime - startTime)));  
					br.close();
					inputStreamReader.close();
					fileInputStream.close();
					boolean flag = file.delete();
					if (flag){
						System.out.println("檔案刪除成功"); 
					}
				} catch (Exception e) {
					e.printStackTrace();
				}
		 }
	}
	
	/**
	 * 解析通用話單
	 */
	public void  readGeneralPurposeXdr(){
		BufferedReader br;
		InputStreamReader inputStreamReader;
		FileInputStream fileInputStream;
		
//		String uri = "F:\\xdr\\tongtong";
		String uri = "/sdb/xdr_common";
		List<XDR_General_purpose> list = new ArrayList<XDR_General_purpose>();
		//計時
		SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:SS");   
		TimeZone t = sdf.getTimeZone();   
		t.setRawOffset(0);   
		sdf.setTimeZone(t);   
		Long startTime = System.currentTimeMillis();  
		//計時
		
		File mrefile = new File(uri);   
		File[] array = mrefile.listFiles();
		 for(int i=0;i<array.length;i++){
			 String inFileName = array[i].getPath();
			 File file = array[i];
			 System.out.println("路徑"+inFileName);
			 try {
					fileInputStream = new FileInputStream(inFileName);
					inputStreamReader =new InputStreamReader(fileInputStream);
					br = new BufferedReader(inputStreamReader);
					String line = "";
					String srg[] = new String[52];  //初始化一下陣列長度,為後面資料補空
						while((line=br.readLine())!=null){
							String[] str = line.split("\\|");
							if (str.length > 0){
								for (int j = 0; j<str.length; j++){
									srg[j] = str[j];
								}
							}
							XDR_General_purpose sm = new XDR_General_purpose(srg[0],srg[1], srg[2], srg[3], srg[4], srg[5], srg[6], srg[7], srg[8], srg[9], 
									srg[10], srg[11], srg[12], srg[13], srg[14], srg[15], srg[16], srg[17], srg[18], srg[19], srg[20], srg[21], srg[22], 
									srg[23], srg[24], srg[25], srg[26], srg[27], srg[28], srg[29], srg[30], srg[31], srg[32], srg[33], srg[34], 
									srg[35], srg[36], srg[37], srg[38], srg[39], srg[40], srg[41], srg[42], srg[43], srg[44], srg[45], srg[46],
									srg[47], srg[48], srg[49], srg[50], srg[51]);
							list.add(sm);
						if(list.size()==100){
							System.out.println(list.size());
						//	System.out.println(list);
							analyzeXdrService.insertGeneralPurposeXdr(list);
							list.clear();
						}
					}
					analyzeXdrService.insertGeneralPurposeXdr(list);
					list.clear();
					System.out.println("上傳成功!!");
					Long endTime = System.currentTimeMillis();   
					System.out.println("用時:" + sdf.format(new Date(endTime - startTime)));
					br.close();
					inputStreamReader.close();
					fileInputStream.close();
					boolean flag = file.delete();
					if (flag){
						System.out.println("檔案刪除成功");
					}
				} catch (Exception e) {
					e.printStackTrace();
				}
		 }
	}
}

執行緒監聽程式碼如下:
package com.hrtel.framework.util;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import com.hrtel.analyzeMR.controller.AnalyzeXdrController;

public class ReadXDRFileListener implements ServletContextListener {
	@Override
	public void contextInitialized(ServletContextEvent event) {// 在這裡初始化監聽器,在tomcat啟動的時候監聽器啟動,可以在這裡實現定時器功能
		AnalyzeXdrController adc = new AnalyzeXdrController();
		System.out.println("啟動成功");
		event.getServletContext().log("定時器已啟動--------------------------------------------------");// 新增日誌,可在tomcat日誌中檢視到
		adc.realTimeCommunication();
		adc.realTimeHttpXdr();
		adc.realTimeMmeXdr();
		adc.realTimePurposeXdr();
		adc.realTimeVoipXdr();
		event.getServletContext().log("已經新增任務--------------------------------------------------");
	}

	@Override
	public void contextDestroyed(ServletContextEvent event) {// 在這裡關閉監聽器,所以在這裡銷燬定時器。
		
	}
}

web.xml配置如下:
 <!-- 監聽讀取XDR檔案 -->
    <listener>
        <listener-class>com.hrtel.framework.util.ReadXDRFileListener</listener-class>
    </listener>

mapping.xml程式碼如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.hrtel.analyzeMR.dao.AnalyzaXDRMapper" >

  <!-- 即時通訊 -->
  <insert id="insertInstantCommuniction" parameterType="java.util.List">
    insert into XDR_Instant_Communication (Length, City, Interface, xDR_ID, RAT, IMSI, IMEI, MSISDN, MachineIPAddtype, 
    	SGW_GGSN_IP_Add, eNB_SGSN_IP_Add,SGW_GGSN_Port, eNB_SGSN_Port, eNB_SGSN_GTP_TEID, SGW_GGSN_GTP_TEID, TAC, Cell_ID, APN, App_Type_Code,
		Procedure_Start_Time, Procedure_End_Time, Protocol_Type, App_Type, App_Sub_type, App_Content, App_Status, USER_IPv4,
		USER_IPv6, User_Port, L4_protocal, App_Server_IP_IPv4, App_Server_IP_IPv6, App_Server_Port, UL_Data, DL_Data,
		UL_IP_Packet, DL_IP_Packet, pkt_disorder_ul, pkt_disorder_dl, pkt_retrs_ul, pkt_retrs_dl, TCP_resp_delay,
		TCP_confirmation_delay, UL_IP_FRAG_PACKETS, DL_IP_FRAG_PACKETS, TCP_First_transaction_requ_delay,
		First_transaction_requ_delay, Window_size, MSS_size, TCP_construction_numbe, TCP_connection_status_indicato,
		session_whethe_ends, Login_account, Software_version, Client_Type, Operation_Type)
    values
     <foreach collection="list" item="item" index="index" separator="," >
     (#{item.Length,jdbcType=VARCHAR}, #{item.City,jdbcType=VARCHAR}, #{item.Interface,jdbcType=VARCHAR}, #{item.xDR_ID,jdbcType=VARCHAR}, #{item.RAT,jdbcType=VARCHAR}, #{item.IMSI,jdbcType=VARCHAR}, #{item.IMEI,jdbcType=VARCHAR},
		#{item.MSISDN,jdbcType=VARCHAR}, #{item.MachineIPAddtype,jdbcType=VARCHAR}, #{item.SGW_GGSN_IP_Add,jdbcType=VARCHAR}, #{item.eNB_SGSN_IP_Add,jdbcType=VARCHAR}, #{item.SGW_GGSN_Port,jdbcType=VARCHAR},
		#{item.eNB_SGSN_Port,jdbcType=VARCHAR}, #{item.eNB_SGSN_GTP_TEID,jdbcType=VARCHAR}, #{item.SGW_GGSN_GTP_TEID,jdbcType=VARCHAR}, #{item.TAC,jdbcType=VARCHAR}, #{item.Cell_ID,jdbcType=VARCHAR}, #{item.APN,jdbcType=VARCHAR},
		#{item.App_Type_Code,jdbcType=VARCHAR}, #{item.Procedure_Start_Time}, #{item.Procedure_End_Time}, #{item.Protocol_Type,jdbcType=VARCHAR}, #{item.App_Type,jdbcType=VARCHAR}, #{item.App_Sub_type,jdbcType=VARCHAR},
		#{item.App_Content,jdbcType=VARCHAR}, #{item.App_Status,jdbcType=VARCHAR}, #{item.USER_IPv4,jdbcType=VARCHAR}, #{item.USER_IPv6,jdbcType=VARCHAR}, #{item.User_Port,jdbcType=VARCHAR}, #{item.L4_protocal,jdbcType=VARCHAR}, #{item.App_Server_IP_IPv4,jdbcType=VARCHAR},
		#{item.App_Server_IP_IPv6,jdbcType=VARCHAR}, #{item.App_Server_Port,jdbcType=VARCHAR}, #{item.UL_Data,jdbcType=VARCHAR}, #{item.DL_Data,jdbcType=VARCHAR}, #{item.UL_IP_Packet,jdbcType=VARCHAR}, #{item.DL_IP_Packet,jdbcType=VARCHAR}, #{item.pkt_disorder_ul,jdbcType=VARCHAR},
		#{item.pkt_disorder_dl,jdbcType=VARCHAR}, #{item.pkt_retrs_ul,jdbcType=VARCHAR}, #{item.pkt_retrs_dl,jdbcType=VARCHAR}, #{item.TCP_resp_delay,jdbcType=VARCHAR}, #{item.TCP_confirmation_delay,jdbcType=VARCHAR}, #{item.UL_IP_FRAG_PACKETS,jdbcType=VARCHAR},
		#{item.DL_IP_FRAG_PACKETS,jdbcType=VARCHAR}, #{item.TCP_First_transaction_requ_delay,jdbcType=VARCHAR}, #{item.First_transaction_requ_delay,jdbcType=VARCHAR}, #{item.Window_size,jdbcType=VARCHAR}, #{item.MSS_size,jdbcType=VARCHAR},
		#{item.TCP_construction_numbe,jdbcType=VARCHAR}, #{item.TCP_connection_status_indicato,jdbcType=VARCHAR}, #{item.session_whethe_ends,jdbcType=VARCHAR}, #{item.Login_account,jdbcType=VARCHAR}, #{item.Software_version,jdbcType=VARCHAR},
		#{item.Client_Type,jdbcType=VARCHAR}, #{item.Operation_Type,jdbcType=VARCHAR})
      </foreach>
  </insert>


相關推薦

解析.txt檔案入庫

前段時間遇到這樣需求,需要從資料夾中讀取.txt檔案按照一定規則解析入庫,並且在tomcat開啟時,開5個執行緒共同去解析檔案入庫 解析程式碼如下: import java.io.BufferedReader; import java.io.File; import ja

【基於WPF+OneNote+Oracle的中文圖片識別系統階段總結】之篇三:批量處理後的txt檔案入庫處理

【小記】:大膽嘗試才能突破,某個中醫藥大學有一批圖片需要處理(ORC),然後進行資料探勘。之前沒有接觸過ORC這個東西,但是還是應允了。在網上搜索一番,關於中文圖片識別,最終敲定為基於微軟的OneNote,其識別率相對較高。網上這個技術點的資料真心不多,後來於部落格園找到一篇博文,但是那個

檔案 —— WEB前端讀取本地檔案內容哪些事(前臺解析txt檔案)……

強制讓瀏覽器允許JS讀寫本地檔案……的操作!問題描述:讓自己的瀏覽器允許js讀寫本地檔案,儘可能多的相容各種瀏覽器。(即本機的js檔案讀寫本機的檔案)問題回覆——1:您的意思是不需要瀏覽器與使用者互動直接操作使用者機上的檔案?不符合瀏覽器的安全標準,屬於瀏覽器的設計缺陷所以瀏

Java解析txt檔案中json資料到List,並存入資料庫

背景:存在一個txt檔案,內容為json資料,格式如下(不是一行一條資料): [{"name":"job","age":39,"occupation":"doctor"},{"name":"tom","age":30,"occupation":"tea

java解析txt檔案

public class TestLine {         static int lineNumber = 0;         public static void main(String[] args) {         try {             Buff

java讀取txt檔案解析其內容

package readtext;/* @author wb @great forever i think,therefor i am */ import java.io.BufferedReader; import java.io.FileInputStream; import java

讀取bson檔案——JavaScript讀取/解析bson檔案並存至txt檔案

由於最近專案需要,不得不讀取 .bson 檔案,網上都是讀取 json 的,關於 bson 的幾乎沒有!!折騰了兩天,最終整理出個路子,如下: 首先是通過 JavaScript 讀取的,為啥要用這個語言,不知道不清楚不瞭解!!!好吧,實際上是 libbson(C++)沒搞出來,一沒文件,二沒帖子,看原始碼也

Java讀取1G以上的txt檔案,並對內容進行解析,利用BufferedReader設定快取大小

讀取檔案路徑 ,讀入 使用帶緩衝的輸入輸出流,效率更高,速度更快。建立一個內部緩衝區陣列並將其儲存在 buf 中,該buf的大小預設為8192。 File file = new File(filepath);    BufferedInputStream fis = ne

unity中解析excel匯出的txt檔案

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; /// <summary> /// 武器 /// </summary> [Ser

爬取網站前1_解析網站robots.txt檔案

使用爬蟲爬取資料前,我們需要解析網站robots.txt檔案,以避免下載禁止爬取的url。這項工作需要使用python3自帶的urllib.robotparser模組 #使用爬蟲爬取資料前,我們需要解析網站robots.txt檔案 import urllib.robot

java 解析txt,conf 檔案

@SuppressWarnings("unchecked")  public String[] readfile(String filepath) throws Exception {   FileReader fr = new FileReader(filepath);

txt檔案解析簡易框架

構建資料表基類 using System.Collections; using System.Collections.Generic; using UnityEngine; using Syste

生成和解析txt文件

stat zha 上海 查找內容 list lose list() checked types package txt; import java.io.BufferedReader; import java.io.File; import java.io.File

Python讀寫txt檔案時的編碼問題

  這個問題來自於一個小夥伴,他在處理中文資料時需要先把裡面的文字過濾然後分詞,因為裡面有許多符號,不僅是中文標點符號,還有✳,emoji等奇怪的符號。   正常情況下,中文的str經過encode('utf-8')變成bytes,然後bytes經過decode('utf-8')變回中文。   原始檔案是

Huanent.Logging.File 寫入日誌到txt檔案

sp.net core微軟官方為日誌提供了原生支援,有如下實現 Console Debug EventLog AzureAppServices TraceSource EventSource 並且在asp.net core專案模板中預設開啟Comsole,Debug的日誌輸出

python處理行列分明的txt檔案

Rock_path="/media/gfq/dataset/Lakh MIDI Data/dataset/Rock.txt" 行列明顯分離: with open(Rock_path) as f: Rock=[line.split() for line in f] 按行列讀取你需要

c++中txt檔案的讀取以及在MFC中讀取txt座標資料並完成圖形繪製

主要介紹如何讀取txt檔案中的座標資料,並在MFC視窗中繪製出來,工程建立方法和繪圖方法與上一篇博文基本一致,這裡就不再詳贅述,可參考上一篇博文vs2010、MFC視窗中繪製點、線、面。 C++中讀取檔案的方法有兩種,一種是來自於C語言的“檔案指標”方法,另一種是C++中的“檔案流”思想。

python flask 解析配置檔案與寫日誌

test.conf   [kafka]kafka_sys_topic = test-sys-infokafka_sys_group = test-consumer-groupzookeeper_server = 192.168.1.1:2181,192.168.1.2:2181,192.168.1

C#讀取txt檔案並畫圖

tools.cs using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; us

輸入輸出流的讀取輸出 .txt 檔案的 中文亂碼問題 未解決

package interview; import java.io.*; public class TestInOrOutStream { public static void main(String[] args) { int c; try { I