java字符串stringbuffer_Java 使用StringBuffer注意

packagecom.dafsdfsd.core.service;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.OutputStreamWriter;importjava.io.PrintWriter;importjava.io.UnsupportedEncodingException;importjava.net.Socket;importjava.net.UnknownHostException;importorg.apache.log4j.Logger;importorg.dom4j.Document;importorg.dom4j.DocumentHelper;importorg.junit.Test;importcom.dafsdfsd.core.common.PorpertiesConfig;importcom.dafsdfsd.core.utils.StringUtils;importcom.dafsdfsd.core.utils.xml.XmlUtil4Jdom;public classSendMessageToCore {private static Logger logger = Logger.getLogger(SendMessageToCore.class);/*** 核心返回报文中状态代码节点*/

public static final String MESSAGE_STATUS_CODE = "MessageStatusCode";/*** 核心返回报文中状态描述节点*/

public static final String MESSAGE_STATUS_DESCRIPTION = "MessageStatusDescription";/*** 核心返回报文中表示成功的代码*/

public static final String CORE_RETURN_CODE_SUCCESS = "0001";/*** 发送报文到核心系统

 
 

* 核心接收GBK编码的报文,在调用这个方法之前应该将报文转换为GBK的编码

* 创建时间:2013-5-30 下午04:21:15

*@parammessage 发送到核心的报文

*@returnString 核心返回的报文

*@throws异常类型 说明*/

public static String sendMessage(String message) throwsException {

logger.info("收到的报文内容是:" +message);

String coreAddress= PorpertiesConfig.getProperty("core.socketAddress");

String corePortString= PorpertiesConfig.getProperty("core.socketPort");

Socket socket= null;

PrintWriter out= null;

BufferedReader in= null;

BufferedWriter bout= new BufferedWriter(new FileWriter(new File("G:/test.txt")));

BufferedWriter bout1= new BufferedWriter(new FileWriter(new File("G:/test1.txt")));//收到的报文

StringBuffer stringBuffer = newStringBuffer();

String receiveString= null;if (coreAddress != null && corePortString != null) {int corePort =Integer.parseInt(corePortString);try{

socket= newSocket(coreAddress, corePort);

out= new PrintWriter(newOutputStreamWriter(socket.getOutputStream()));

out.println(message);

out.flush();

in= new BufferedReader(newInputStreamReader(socket.getInputStream(), XmlUtil4Jdom.GBK_ENCODING));while ((message = in.readLine()) != null) {//bout.write(message);

stringBuffer.append(message + "\n");//stringBuffer.append(message);

}//BufferedReader流已指定编码输出,这里不需要再次转码了//receiveString = new String(stringBuffer.toString().getBytes(XmlUtil4Jdom.GBK_ENCODING), XmlUtil4Jdom.GBK_ENCODING);

receiveString =stringBuffer.toString();

bout.write(receiveString);

}catch(UnknownHostException e) {

logger.error("没有找到核心的服务器", e);throw new Exception("没有找到核心的服务器", e);

}catch(IOException e) {

logger.error("与核心服务器通信出现异常", e);throw new Exception("与核心服务器通信出现异常", e);

}finally{if (out != null)

out.close();if (in != null)

in.close();if (bout != null)

bout.close();

}

}//receiveString = stringBuffer.toString();//logger.info("核心返回的原始内容是:" + receiveString);

String msgString= null;if(null != receiveString && !receiveString.isEmpty()){

msgString=getXmlContent(receiveString);//int msgLength = Integer.parseInt(receiveString.substring(0, 6).trim());//前12位为报文长度和接口代码//msgString = substring4CharArray(receiveString, 12, msgLength);//msgString = receiveString.replaceFirst(msgLength, "");//msgString = receiveString.substring(12);//byte[] msg = msgString.getBytes(XmlUtil4Jdom.GBK_ENCODING);//

//byte[] newMsg = new byte[msgLength];//for (int i = 0; i < msgLength; i++) {//newMsg[i] = msg[i];//}//

//msgString = new String(newMsg//logger.info("将核心返回的报文内容做编码转换及长度截取之后的结果:" + msgString);

logger.info("将核心返回的报文内容做编码转换及长度截取之后的结果:已处理");

}try{

bout1.write(msgString);if (bout1 != null)

bout1.close();

}catch(Exception e) {//TODO Auto-generated catch block

e.printStackTrace();

}

Document doc=DocumentHelper.parseText(msgString);returnmsgString;

}public staticString getXmlContent(String src) {//StringBuffer sb = new StringBuffer();

String rs = null;try{//byte[] byteArray = null;//char[] charArray = null;//byteArray = src.getBytes(XmlUtil4Jdom.GBK_ENCODING);//charArray = src.toCharArray();//System.out.println(src.length());//System.out.println(charArray.length);//System.out.println(byteArray.length);//System.out.println(src.charAt(1));//System.out.println(src.charAt(src.length() - 2));//System.out.println(src.charAt(src.length() - 1));//获取代码内容

String srcCode = org.apache.commons.lang.StringUtils.substring(src, 0, 12);

System.out.println(srcCode);//获取xml内容

rs = org.apache.commons.lang.StringUtils.substring(src, 12, src.lastIndexOf(">") + 1);//return src;//charArray = src.toCharArray();//for (int i = 0; i < charArray.length; i++) {//sb.append(charArray[i]);//}//System.out.println();//System.out.println();//System.out.println();//System.out.println(src.length());//System.out.println(charArray.length);//System.out.println(byteArray.length);//String//for (int i = 0; i < src.length(); i++) {

sb.append(charArray[i]);

sb.append(src.charAt(i));//char s = src.charAt(i);

System.out.println(s);//sb.append(s);//}//byte//for (int i = 0; i < byteArray.length; i++) {//sb.append((char)byteArray[i]);//}//return new String(byteArray, XmlUtil4Jdom.GBK_ENCODING);//System.out.println();//System.out.println();//System.out.println();//System.out.println(src.charAt(src.length() - 3));//System.out.println(src.charAt(src.length() - 2));//System.out.println(src.charAt(src.length() - 1));

}catch(Exception e) {//TODO Auto-generated catch block

e.printStackTrace();

}returnrs;

}

@Testpublic voidtest() {

StringBuffer buffer= newStringBuffer();

FileReader fr= null;

BufferedReader br= null;try{//fr = new FileReader("E:/workspace3/i-myproject/b_LOG/temp.xml");

fr = new FileReader("G:/workspace/i-myproject/temp.xml");

br= newBufferedReader(fr);

String content=br.readLine();while (content != null) {

buffer.append(content);

content=br.readLine();

}

String msg=buffer.toString();

sendMessage(newString(msg.getBytes(), XmlUtil4Jdom.GBK_ENCODING));

}catch(FileNotFoundException e) {

e.printStackTrace();

}catch(Exception e) {

e.printStackTrace();

}finally{try{

br.close();

fr.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值