`
vera_sq
  • 浏览: 117401 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

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()方法就可以了!

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics