读取.txt文件,并使用html显示结果。
cpu.txt文件的内容:
84.0
72.0
47.0
47.0
47.0
...
1,使用js读取文件,封装成jsCharts要求格式的数据,使用jsCharts进行绘图。
2,jsCharts可以使用array[][] 二维数组,或者.xml或者.json的格式的数据。 下面使用了前两种方法。 需要说明的是,因为js读取本地文件是非法的,只能使用兼容IE的浏览器进行打开,如IE,QQ浏览器,360浏览器的兼容模式等。
具体如下
<html>
<head>
<title>JSChart</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<script type="text/javascript" src="jscharts.js"></script>
</head>
<body>
<div id="result">
<h3>CPU 数据</h3><div id="cpu">Loading graph...</div>
<script type="text/javascript">
function draw(file,id,ylabel) {
var pathArray = new String(document.location.pathname);
var index = pathArray.lastIndexOf("/");
var path = pathArray.substr(1,index);
var fso=new ActiveXObject("Scripting.FileSystemObject");
var f=fso.OpenTextFile(path + file ,1);
var arr = f.ReadAll();
var arrs = arr.split("\r\n");
var myData = new Array(arrs.length-1);
for(var i=0;i<arrs.length-1;i++)
myData[i] = [i,parseFloat(arrs[i])];
var average=0;
for(var j=0;j<arrs.length-1;j++)
average += myData[j][1];
average = average/(arrs.length-1);
var myChart = new JSChart(id, 'line');
myChart.setDataArray(myData);
myChart.setTitle( id+' with Average'+ Math.round(average * 100) / 100 );
myChart.setAxisNameX('间隔5s的数据点');
myChart.setAxisNameY(ylabel);
myChart.setAxisPaddingLeft(50);
myChart.setAxisPaddingRight(50);
myChart.setAxisPaddingTop(50);
myChart.setAxisPaddingBottom(40);
myChart.resize(900,400);
myChart.draw();
}
draw("cpu.txt","cpu","%");
</script>
</div>
</body>
</html>
首先将.txt,使用java读取并生成.xml文件,然后在html中使用js读取。
**生成的cpu.xml格式的文件:**
<?xml version="1.0"?>
<JSChart>
<dataset type="line">
<data unit="0" value="84.0"/>
<data unit="1" value="72.0"/>
<data unit="2" value="47.0"/>
<data unit="3" value="47.0"/>
<data unit="4" value="47.0"/>
<data unit="5" value="47.0"/>
<data unit="6" value="47.0"/>
<data unit="7" value="47.0"/>
</dataset>
<optionset>
<option set="setLineColor" value="'#8D9386'"/>
<option set="setLineWidth" value="1"/>
<option set="setTitleColor" value="'#7D7D7D'"/>
<option set="setAxisColor" value="'#9F0505'"/>
<option set="setGridColor" value="'#a4a4a4'"/>
<option set="setAxisValuesColor" value="'#333639'"/>
<option set="setAxisNameColor" value="'#333639'"/>
<option set="setTextPaddingLeft" value="0"/>
<option set="setSize" value="900,400"/>
</optionset>
</JSChart>
读取cpu.xml的html文件:
<html>
<head>
<title>JSChart</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<script type="text/javascript" src="jscharts.js"></script>
</head>
<body>
<div id="result">
<h3>CPU 数据</h3><div id="cpu">Loading graph...</div>
<script type="text/javascript">
var myChart = new JSChart('cpu', 'line');
myChart.setDataXML("cpu_xml.xml");
myChart.draw();
</script>
</div>
</body>
</html>
读取.txt文件生成.xml格式,使用java完成该工作:
public class XmlMaker {
private static final String XML_PATH = "D:/Users/pycode/AndroidMonitor/cpu_xml.xml";
private static final String DATA_PATH = "D:/Users/pycode/AndroidMonitor/cpu.txt";
List<String> list = new ArrayList<String>();
/**
* 解析xx.dat存储到map中
*/
public void parseFile()
{
File file = new File(DATA_PATH);
String encoding="GBK";
if(null==file) return;
try {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
String line = null;
while((line=bufferedReader.readLine())!=null)
{
String array = line.trim(); //空格分隔
if(null==array ||array.isEmpty())
continue;
list.add(array);
}
System.out.println(list.size());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 将map中的数据写到到xml中
*/
public void writeXmlFromMap()
{
if(null==list || list.size()==0)
return;
//写入xml
File file = new File(XML_PATH);
try {
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, false)));
bufferedWriter.write(
"<?xml version=\"1.0\"?>\n" +
"<JSChart>\n" +
"\t<dataset type=\"line\">\n");
int pos = 1;
for(int i=0;i<list.size();i++)
bufferedWriter.write("\t\t<data unit=\""+i+"\" value=\""+list.get(i)+"\"/>\n");
bufferedWriter.write(
"</dataset>\n" +
"\t<optionset>\n" +
"\t\t<option set=\"setLineColor\" value=\"'#8D9386'\"/>\n" +
"\t\t<option set=\"setLineWidth\" value=\"1\"/>\n" +
"\t\t<option set=\"setTitleColor\" value=\"'#7D7D7D'\"/>\n" +
"\t\t<option set=\"setAxisColor\" value=\"'#9F0505'\"/>\n" +
"\t\t<option set=\"setGridColor\" value=\"'#a4a4a4'\"/>\n" +
"\t\t<option set=\"setAxisValuesColor\" value=\"'#333639'\"/>\n" +
"\t\t<option set=\"setAxisNameColor\" value=\"'#333639'\"/>\n" +
"\t\t<option set=\"setTextPaddingLeft\" value=\"0\"/>\n" +
"\t\t<option set=\"setSize\" value=\"900,400\"/>\n" +
"\t</optionset>\n " +
"</JSChart>");
bufferedWriter.flush();
bufferedWriter.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args){
XmlMaker maker = new XmlMaker();
maker.parseFile();
maker.writeXmlFromMap();
}
}