java.io读取文件疑惑

下面是需要用流去读的xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<page pageId ="deskTop" pageTitle="我的桌面" pageVersion="1.0" cache="Check">
  <body bgImage="$bgImage$">
    <gridTable nameId="gid1" location="" size="" rows="3" cols="3">
      <gridItem text="移动产品" url="$server_path$/Api.ashx?function=getGrpProduct&amp;id_u=$id_u$" img="local://resources/desktop/2.png"/>
      <gridItem text="集团产品" url="$server_path$/Api.ashx?function=getProduct&amp;id_u=$id_u$" img="local://resources/desktop/3.png"/>
      <gridItem text="知识库" url="$server_path$/Api.ashx?function=getKnowledgeTypes&amp;id_u=$id_u$" img="local://resources/desktop/0.png"/>
      <gridItem text="信息采集" url="$server_path$/Api.ashx?function=getCollType&amp;id_u=$id_u$" img="local://resources/desktop/1.png"/>
      <gridItem text="在线交流" url="$server_path$/Api.ashx?function=getMyQuestionList&amp;id_u=$id_u$&amp;id_acc=$id_acc$" img="local://resources/desktop/4.png"/>
      <gridItem text="通讯录" url="$server_path$/Api.ashx?function=getAddrTypes&amp;id_u=$id_u$" img="local://resources/desktop/5.png"/>
      <gridItem text="广播信息" url="$server_path$/Api.ashx?function=getNewsList&amp;id_u=$id_u$" img="local://resources/desktop/6.png"/>
      <gridItem text="辅助软件" url="$server_path$/Api.ashx?function=getHelpTool" img="local://resources/desktop/7.png"/>
      <gridItem text="退出系统" url="cmd://exit_app" img="local://resources/desktop/8.png"/>
    </gridTable>
  </body>
</page>

 

首先我是用fileInputStream去读的,代码如下:

public static String readXml(String path){
StringBuffer sb = new StringBuffer();
try {
InputStream is = new FileInputStream(path);
byte[] buffer = new byte[1024];
while(true){
int length = is.read(buffer,0,1024);
if(length == -1) break;
length = is.read(buffer,0,1024);
sb.append(new String(buffer));
}
} catch (Exception e) {
e.printStackTrace();
} 
return sb.toString().trim();
}

 

可是读出来的后台得到的结果是:

i.ashx?function=getAddrTypes&amp;id_u=39" img="local://resources/desktop/5.png"/>
      <gridItem text="骞挎挱淇℃伅" url="http://192.168.89.131/Api.ashx?function=getNewsList&amp;id_u=39" img="local://resources/desktop/6.png"/>
      <gridItem text="杈呭姪杞欢" url="http://192.168.89.131/Api.ashx?function=getHelpTool" img="local://resources/desktop/7.png"/>
      <gridItem text="閫?鍑虹郴缁?" url="cmd://exit_app" img="local://resources/desktop/8.png"/>
    </gridTable>
  </body>
</page>es/desktop/3.png"/>
      <gridItem text="鐭ヨ瘑搴?" url="http://192.168.89.131/Api.ashx?function=getKnowledgeTypes&amp;id_u=39" img="local://resources/desktop/0.png"/>
      <gridItem text="淇℃伅閲囬泦" url="http://192.168.89.131/Api.ashx?function=getCollType&amp;id_u=39" img="local://resources/desktop/1.png"/>
      <gridItem text="鍦ㄧ嚎浜ゆ祦" url="http://192.168.89.131/Api.ashx?function=getMyQuestionList&amp;id_u=39&amp;id_acc=64" img="local://resources/desktop/4.png"/>
      <gridItem text="閫氳褰?" url="http://192.168.89.131/Ap

 不但错行,而且还存在乱码,所以我换成用reader.read()方法来读取,

Reader r = new InputStreamReader(is,"utf-8");

 

这样一来乱码问题是解决了,不过还是有错行的问题,所以正确代码如下:

public static String readXml(String path){
		StringBuffer sb = new StringBuffer();
		try {
			InputStream is = new FileInputStream(path);
			Reader r = new InputStreamReader(is,"utf-8");
			BufferedReader br = new BufferedReader(r);
			String str = "";
			while(true){
				//读取一行文字数据
				str = br.readLine();
				if(str == null){
					break;
				}
				sb.append(str+"\n");
			}
		} catch (Exception e) {
			e.printStackTrace();
		} 
		return sb.toString().trim();
	}

 

用BufferedReader.readLine()方法就可以了!

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值