java从txt读取数据_简单纪要:java 从txt文本中 读取数据

package com.ceshi.util;

import com.alibaba.fastjson.JSONArray;

import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;

import org.apache.commons.httpclient.Header;

import org.apache.commons.httpclient.HttpStatus;

import org.apache.commons.httpclient.methods.GetMethod;

import org.apache.commons.httpclient.params.HttpMethodParams;

import org.apache.commons.lang.StringUtils;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.http.HttpHeaders;

import java.io.*;

import java.net.HttpURLConnection;

import java.net.URL;

import java.util.HashMap;

import java.util.Iterator;

import java.util.LinkedList;

import java.util.Map;

import java.util.zip.GZIPInputStream;public classWebResourceReader {private static final Logger log = LoggerFactory.getLogger(WebResourceReader.class);protected static final Logger STDERR = LoggerFactory.getLogger("STDERR");private static String encoding = "gbk";private staticString getHost(String url){

String regexp= "(http://)?([^/]*)(/?.*)";return url.replaceAll(regexp, "$2");

}private staticString getPath(String url){return url.replaceAll("http://"+getHost(url), "");

}public staticString read(String url) {

StringBuffer buffer= newStringBuffer();

BufferedReaderin = null;

GZIPInputStream gzin= null;

GetMethod getMethod= null;try{

PostUrl pu= newPostUrl();

pu.setHost(getHost(url));

pu.setPath(getPath(url));

pu.setPort(80);//创建GET方法的实例

getMethod = HttpClientUtil.getInstance().get(pu);//使用系统提供的默认的恢复策略

getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,newDefaultHttpMethodRetryHandler());//执行getMethod

int statusCode =getMethod.getStatusCode();if (statusCode !=HttpStatus.SC_OK) {

log.error("读取远程资源文件失败:"+url);

}

InputStreamis =getMethod.getResponseBodyAsStream();

String contEncoding="";

Header head=getMethod.getResponseHeader("Content-Encoding");if(null!=head){

contEncoding=head.getValue();

}/**

* 如果文件使用GZIP压缩,则用GZIP流进行处理*/

if(StringUtils.isNotBlank(contEncoding)&& contEncoding.contains("gzip")) {//读取内容

gzin = new GZIPInputStream(is);in = new BufferedReader(newInputStreamReader(gzin, encoding));

}else{in = new BufferedReader(new InputStreamReader(is, encoding));

}

String inputLine;while ((inputLine = in.readLine()) != null) {

buffer.append(inputLine);

}

}catch(Exception e) {

log.error("##read error=",e);

}finally{//释放连接

if(getMethod!=null){

getMethod.releaseConnection();

}try{if(in!=null)in.close();

}catch(IOException e) {

log.error("Read remote file exception :",e);

}

}returnbuffer.toString();

}/**

* HttpClientUtil get方法

* @param url

* @return

* @throws Exception*/

public staticString getHttpResponse(String url) throws Exception{

BufferedReaderin = null;

InputStreamis = null;

GetMethod getMethod= null;try{

PostUrl pu= newPostUrl();

pu.setHost(getHost(url));

pu.setPath(getPath(url));

pu.setPort(80);

getMethod= HttpClientUtil.getInstance().get(pu);

getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,newDefaultHttpMethodRetryHandler());int statusCode =getMethod.getStatusCode();

log.info("##getHttpResponse-url="+url+"|http-status="+statusCode);is =getMethod.getResponseBodyAsStream();

StringBuffer buffer= newStringBuffer();in = new BufferedReader(new InputStreamReader(is, "utf-8"));

String inputLine;while ((inputLine = in.readLine()) != null) {

buffer.append(inputLine);

}returnbuffer.toString();

}catch(Exception e) {

STDERR.error("##getHttpResponse error=",e);throwe;

}finally{try{if(is!=null)is.close();if(in!=null)in.close();if(getMethod!=null)

getMethod.releaseConnection();

}catch(IOException e) {

e.printStackTrace();

}

}

}/**

* HttpURLConnection Post方法

* @param url

* @param param

* @return

* @throws Exception*/

public staticString doPost(String url, String param) throws Exception {

URL url1= null;

BufferedReader reader= null;

PrintWriter writer= null;

HttpURLConnection conn= null;try{

url1= newURL(url);

conn=(HttpURLConnection) url1.openConnection();

conn.setConnectTimeout(20000);

conn.setReadTimeout(20000);

conn.setRequestMethod("POST");

conn.setInstanceFollowRedirects(true);

conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)");

conn.setDoInput(true);

conn.setDoOutput(true);

writer= newPrintWriter(conn.getOutputStream());

writer.print(param);

writer.flush();int resCode =conn.getResponseCode();

log.info("##doPost……url="+url+",param="+param+", Response code is" +resCode);if(resCode==200)

{

reader= new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));

StringBuffer sb= newStringBuffer();

String line;while ((line = reader.readLine()) != null) {

sb.append(line).append("\n");

}returnsb.toString();

}return "";

}catch(IOException e) {

STDERR.error("##HTTP Request is error,url="+url+",param="+param+", error=",e);throwe;

}finally{if (reader != null) {try{

reader.close();

}catch(IOException e1) {

STDERR.error("##doPost error1:",e1);

}

}if (writer != null) {try{

writer.close();

}catch(Exception e) {

STDERR.error("##doPost error2:",e);

}

}if (conn != null)try{

conn.disconnect();

}catch(Exception e) {

STDERR.error("##doPost error3:",e);

}

}

}/**

* headers的value暂时支持1个参数

* @param url

* @param param

* @param headers

* @return*/

public staticString doPost(String url, String param, HttpHeaders headers) throws Exception {

Iterator iterator=headers.entrySet().iterator();

HashMap map = new HashMap();while(iterator.hasNext()) {

HttpHeaders.Entry entry=(HttpHeaders.Entry) iterator.next();

Object key=entry.getKey();

Object vals=entry.getValue();if(vals instanceof LinkedList) {

String val= (String) ((LinkedList) vals).get(0);if (val instanceof String &&org.apache.commons.lang3.StringUtils.isNotBlank(val)) {

map.put(key, val);

}

}

}returndoPost(url, param, map);

}/**

* HttpURLConnection Post方法,待测

* @param url

* @param param

* @return

* @throws Exception*/

public staticString doPost(String url, String param, Map headers) throws Exception {

URL url1= null;

BufferedReader reader= null;

DataOutputStream writer= null;

GZIPInputStream gzin= null;

HttpURLConnection conn= null;

BufferedReader input= null;

String encodeCharset= "UTF-8";try{

url1= newURL(url);

conn=(HttpURLConnection) url1.openConnection();

conn.setConnectTimeout(20000);

conn.setReadTimeout(20000);

conn.setRequestMethod("POST");

conn.setInstanceFollowRedirects(true);

Iterator iterator=headers.entrySet().iterator();while(iterator.hasNext()) {

Map.Entry entry=(Map.Entry) iterator.next();

Object key=entry.getKey();

Object val=entry.getValue();if (key instanceof String &&val instanceof String)

conn.setRequestProperty((String) key, (String) val);

}

conn.setRequestProperty("Accept-Charset", "UTF-8");

conn.setRequestProperty("contentType", "UTF-8");

conn.setDoInput(true);

conn.setDoOutput(true);

writer= newDataOutputStream(conn.getOutputStream());

writer.write(param.getBytes());

writer.flush();

writer.close();int resCode =conn.getResponseCode();

log.info("##doPost_header_url=" + url + ",param=" + param + ", Response code is" +resCode);if (resCode == 200) {

String acceptEncoding= conn.getRequestProperty("accept-encoding");/**

* 如果文件使用GZIP压缩,则用GZIP流进行处理*/

if(StringUtils.isNotBlank(acceptEncoding)&& acceptEncoding.contains("gzip")) {//读取内容

gzin = newGZIPInputStream(conn.getInputStream());

input= new BufferedReader(newInputStreamReader(gzin,encodeCharset));

}else{

input= new BufferedReader(newInputStreamReader(conn.getInputStream(),encodeCharset));

}

String result= "";

String str;while (null != (str =input.readLine())) {

result+=str;

}returnresult;

}return "";

}catch(Exception e) {

e.printStackTrace();

STDERR.error("##HTTP Request is error,url=" + url + ",param=" + param + ", error=", e);throwe;

}finally{if (reader != null) {try{

reader.close();

}catch(IOException e1) {

STDERR.error("##doPost error1:", e1);

}

}if (writer != null) {try{

writer.close();

}catch(Exception e) {

STDERR.error("##doPost error2:", e);

}

}if (conn != null)try{

conn.disconnect();

}catch(Exception e) {

STDERR.error("##doPost error3:", e);

}

}

}/**

* HttpURLConnection get方法

* @param url

* @return*/

public staticString doGet(String url) {

URL url1= null;

BufferedReader reader= null;

HttpURLConnection conn= null;try{

url1= newURL(url);

conn=(HttpURLConnection) url1.openConnection();

conn.setConnectTimeout(20000);

conn.setReadTimeout(20000);

conn.setRequestMethod("GET");

conn.setInstanceFollowRedirects(true);

conn.connect();if (conn.getResponseCode()== 200)

{

reader= new BufferedReader(newInputStreamReader(conn.getInputStream()));

StringBuffer sb= newStringBuffer();

String line;while ((line = reader.readLine()) != null) {

sb.append(line).append("\n");

}returnsb.toString();

}return "";

}catch(IOException e) {

STDERR.error("##doGet error,url="+url+", error=",e);throw newRuntimeException(e.getMessage(),e);

}finally{try{if(reader!=null)reader.close();if(conn!=null)conn.disconnect();

}catch(Exception e) {

STDERR.error("##doGet finally error,url="+url+", error=",e);

e.printStackTrace();

}

}

}/**

* HttpURLConnection PUT方法

* @param url

* @return*/

public static String doPUT(String url,Mapheaders) {

URL url1= null;

BufferedReader reader= null;

HttpURLConnection conn= null;try{

url1= newURL(url);

conn=(HttpURLConnection) url1.openConnection();

conn.setDoInput(true);

conn.setDoOutput(true);

conn.setConnectTimeout(20000);

conn.setReadTimeout(20000);

conn.setRequestMethod("PUT");if (headers != null && headers.size() > 0) {for (Map.Entryentry : headers.entrySet()) {

conn.setRequestProperty(entry.getKey(), entry.getValue());

}

}

conn.getOutputStream().flush();

conn.getOutputStream().close();

conn.connect();int code =conn.getResponseCode();if (code == 200) {

reader= new BufferedReader(newInputStreamReader(conn.getInputStream()));

StringBuffer sb= newStringBuffer();

String line;while ((line = reader.readLine()) != null) {

sb.append(line).append("\n");

}returnsb.toString();

}

log.info("##doPut code" +code);return "";

}catch(IOException e) {

STDERR.error("##doPut error,url="+url+", error=",e);throw newRuntimeException(e.getMessage(),e);

}finally{try{if(reader!=null)reader.close();if(conn!=null)conn.disconnect();

}catch(Exception e) {

STDERR.error("##doPut error1,url="+url+", error=",e);

}

}

}/**

* HttpURLConnection get方法

* @param url

* @return*/

public staticString doGet(String url, String userAgent, Boolean useUserAgent,String clientIp) {

URL url1= null;

BufferedReader reader= null;

HttpURLConnection conn= null;try{

url1= newURL(url);

conn=(HttpURLConnection) url1.openConnection();

conn.setConnectTimeout(20000);

conn.setReadTimeout(20000);

conn.setRequestMethod("GET");

conn.setInstanceFollowRedirects(true);if(useUserAgent) {

conn.addRequestProperty("User-Agent", userAgent);

}if(StringUtils.isNotBlank(clientIp)){

conn.addRequestProperty("j-forwarded-for",clientIp);

conn.addRequestProperty("x-forwarded-for",clientIp);

}

conn.connect();if (conn.getResponseCode()== 200)

{

reader= new BufferedReader(newInputStreamReader(conn.getInputStream()));

StringBuffer sb= newStringBuffer();

String line;while ((line = reader.readLine()) != null) {

sb.append(line).append("\n");

}returnsb.toString();

}return "";

}catch(IOException e) {

STDERR.error("##doGet error,url="+url+", error=",e);throw newRuntimeException(e.getMessage(),e);

}finally{try{if(reader!=null)reader.close();if(conn!=null)conn.disconnect();

}catch(Exception e) {

STDERR.error("##doGet finally error,url="+url+", error=",e);

e.printStackTrace();

}

}

}/**

* HttpURLConnection get方法

* @param url

* @return*/

public staticString doGet(String url,String charset) {

URL url1= null;

BufferedReader reader= null;

HttpURLConnection conn= null;if(StringUtils.isBlank(charset)){

charset="utf-8";

}try{

url1= newURL(url);

conn=(HttpURLConnection) url1.openConnection();

conn.setConnectTimeout(20000);

conn.setReadTimeout(20000);

conn.setRequestMethod("GET");

conn.setInstanceFollowRedirects(true);

conn.connect();if (conn.getResponseCode()== 200)

{

reader= new BufferedReader(newInputStreamReader(conn.getInputStream(),charset));

StringBuilder sb= newStringBuilder();

String line;while ((line = reader.readLine()) != null) {

sb.append(line).append("\n");

}returnsb.toString();

}return "";

}catch(IOException e) {

STDERR.error("##doGet error,url="+url+", error=",e);throw newRuntimeException(e.getMessage(),e);

}finally{try{if(reader!=null)reader.close();if(conn!=null)conn.disconnect();

}catch(Exception e) {

STDERR.error("##doGet finally error,url="+url+", error=",e);

e.printStackTrace();

}

}

}/**

* HttpURLConnection Post方法获取请求

* @param url

* @param param

* @return*/

public static MapdoPostForLive(String url, String param){

URL url1= null;

BufferedReader reader= null;

PrintWriter writer= null;

HttpURLConnection connection= null;

Map map = new HashMap();try{

url1= newURL(url);

connection=(HttpURLConnection) url1.openConnection();

connection.setConnectTimeout(20000);

connection.setReadTimeout(20000);

connection.setRequestMethod("POST");

connection.setInstanceFollowRedirects(true);

connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)");

connection.setDoInput(true);

connection.setDoOutput(true);

writer= newPrintWriter(connection.getOutputStream());

writer.print(param);

writer.flush();int resCode =connection.getResponseCode();

map.put("rescode", resCode);

log.info("##doPostForLive……url="+url+",param="+param+", Response code is" +resCode);if(resCode!=HttpStatus.SC_OK){

reader= new BufferedReader(newInputStreamReader(connection.getErrorStream()));

}else{

reader= new BufferedReader(newInputStreamReader(connection.getInputStream()));

}

StringBuffer sb= newStringBuffer();

String line;while ((line = reader.readLine()) != null) {

sb.append(line).append("\n");

}

map.put("resmess", sb.toString());

}catch(Exception e) {

STDERR.error("##doPostForLive Request is error,url="+url+",param="+param+", error=",e);

}finally{if (reader != null) {try{

reader.close();

}catch(IOException e1) {

STDERR.error("##doPostForLive error1:",e1);

}

}if (writer != null) {try{

writer.close();

}catch(Exception e) {

STDERR.error("##doPostForLive error2:",e);

}

}if (connection != null)try{

connection.disconnect();

}catch(Exception e) {

STDERR.error("##doPostForLive error3:",e);

}

}returnmap;

}/**

* HttpURLConnection Get方法获取请求

* @param url

* @return*/

public static MapdoGetForLive(String url){

URL url1= null;

BufferedReader reader= null;

HttpURLConnection connection= null;

Map map = new HashMap();try{

url1= newURL(url);

connection=(HttpURLConnection) url1.openConnection();

connection.setConnectTimeout(20000);//设置连接主机超时(单位:毫秒)

connection.setReadTimeout(20000);//设置从主机读取数据超时(单位:毫秒)

connection.setRequestMethod("GET");

connection.setInstanceFollowRedirects(true);

connection.connect();int resCode =connection.getResponseCode();

log.info("##doGetLive……url="+url+", Response code is" +resCode);

map.put("rescode", resCode);if(resCode!=HttpStatus.SC_OK){

reader= new BufferedReader(new InputStreamReader(connection.getErrorStream(),"UTF-8"));

}else{

reader= new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));

}

StringBuffer sb= newStringBuffer();

String line;while ((line = reader.readLine()) != null) {

sb.append(line).append("\n");

}

map.put("resmess", sb.toString());

}catch(Exception e) {

STDERR.error("##doGetLive Request is error,url="+url+", error=",e);

}finally{if (reader != null) {try{

reader.close();

}catch(IOException e1) {

STDERR.error("##doGetLive error1:",e1);

}

}if (connection != null)try{

connection.disconnect();

}catch(Exception e) {

STDERR.error("##doGetLive error3:",e);

}

}returnmap;

}/**

* 抽奖

* @param url

* @param param

* @return

* @throws Exception*/

public staticString doPostForLottery(String url, String param) throws Exception {

URL url1= null;

BufferedReader reader= null;

PrintWriter writer= null;

HttpURLConnection connection= null;try{

url1= newURL(url);

connection=(HttpURLConnection) url1.openConnection();

connection.setConnectTimeout(20000);

connection.setReadTimeout(20000);

connection.setRequestMethod("POST");

connection.setInstanceFollowRedirects(true);

connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)");

connection.setRequestProperty("referer", "http://live.jd.com");

connection.setDoInput(true);

connection.setDoOutput(true);

writer= newPrintWriter(connection.getOutputStream());

writer.print(param);

writer.flush();int resCode =connection.getResponseCode();

log.info("##doPostForLottery……url="+url+",param="+param+", Response code is" +resCode);if(resCode==200)

{

reader= new BufferedReader(newInputStreamReader(connection.getInputStream()));

StringBuffer sb= newStringBuffer();

String line;while ((line = reader.readLine()) != null) {

sb.append(line).append("\n");

}returnsb.toString();

}return "";

}catch(IOException e) {

STDERR.error("##doPostForLottery HTTP Request is error,url="+url+",param="+param+", error=",e);throwe;

}finally{if (reader != null) {try{

reader.close();

}catch(IOException e1) {

STDERR.error("##doPostForLottery error1:",e1);

}

}if (writer != null) {try{

writer.close();

}catch(Exception e) {

STDERR.error("##doPostForLottery error2:",e);

}

}if (connection != null)try{

connection.disconnect();

}catch(Exception e) {

STDERR.error("##doPostForLottery error3:",e);

}

}

}/**

* 获取外部数据 try3次

*

* @param url

* @return*/

public staticString getDataTry(String url, String param, String type) {if(StringUtils.isBlank(url)) {return null;

}

log.info("##getDataTry----url=" + url + "|param=" + param + "|type="+type);

String data=StringUtils.EMPTY;//失败尝试3次

int try_num = 3;for (int retryTime = 1; retryTime <= try_num; retryTime++) {try{if (StringUtils.isNotBlank(type) && "POST".equals(type)) {

data=WebResourceReader.doPost(url, param);

}else if (StringUtils.isNotBlank(type) && "GET".equals(type)) {

data=WebResourceReader.doGet(url);

}break;

}catch(Exception e) {if (retryTime ==try_num) {

STDERR.error("##getDataTry...url" + url + "|try" +try_num+ "次 fail |param=" + param + "|type=" +type+ "|error=", e);}else{

log.info("##getDataTry...url=" + url + "|try="

+retryTime);continue;

}

}

}

log.info("##getDataTry...url=" + url + "|param=" + param + "|type="

+ type + "|data=" +data);returndata;

}/**

* HttpURLConnection Post方法 参数json格式

* @param url

* @param param

* @return

* @throws Exception*/

public staticString doPostJson(String url, String param) throws Exception {

URL url1= null;

BufferedReader reader= null;

PrintWriter writer= null;

HttpURLConnection conn= null;try{

url1= newURL(url);

conn=(HttpURLConnection) url1.openConnection();

conn.setConnectTimeout(20000);

conn.setReadTimeout(20000);

conn.setRequestMethod("POST");

conn.setInstanceFollowRedirects(true);

conn.setRequestProperty("accept", "*/*");

conn.setRequestProperty("connection", "Keep-Alive");

conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)");

conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");

conn.setDoInput(true);

conn.setDoOutput(true);

writer= newPrintWriter(conn.getOutputStream());

writer.print(param);

writer.flush();int resCode =conn.getResponseCode();

log.info("##doPost……url="+url+",param="+param+", Response code is" +resCode);if(resCode==200)

{

reader= new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));

StringBuffer sb= newStringBuffer();

String line;while ((line = reader.readLine()) != null) {

sb.append(line).append("\n");

}returnsb.toString();

}return "";

}catch(IOException e) {

STDERR.error("##HTTP Request is error,url="+url+",param="+param+", error=",e);throwe;

}finally{if (reader != null) {try{

reader.close();

}catch(IOException e1) {

STDERR.error("##doPost error1:",e1);

}

}if (writer != null) {try{

writer.close();

}catch(Exception e) {

STDERR.error("##doPost error2:",e);

}

}if (conn != null)try{

conn.disconnect();

}catch(Exception e) {

STDERR.error("##doPost error3:",e);

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值