java解析java文件
A. java读入文件解析输出Map
你这Map<String, Map<String, Float>>没看明白,map里面还有个map?
一层map示例如下,两层map请说明白
importjava.io.*;
importjava.util.HashMap;
importjava.util.Map;
publicclassTest
{
publicstaticvoidmain(String[]args)throwsException
{
Map<String,Float>map=newHashMap<String,Float>();
//如果你文件里没有中文,那个GBK编码就无所谓,否则要按实际编码来定
BufferedReaderbr=
newBufferedReader(newInputStreamReader(newFileInputStream(newFile("d:/test.txt")),"GBK"));
Stringstr;
while((str=br.readLine())!=null)
{
//如果分隔符不是空格,改成对应的分隔符,比如tab即" "
String[]strs=str.split("");
if(strs.length!=3)
{
System.out.println("格式错误:"+str);
}
try
{
map.put(strs[1],Float.parseFloat(strs[2]));
}
catch(NumberFormatExceptione)
{
e.printStackTrace();
}
}
}
}
B. java中怎么解析这样的文件
键值的话直接获取节点值, 你补充的那种形式要获取属性名和属性值即可。
用dom4j处理,要下载dom4j.jar包build path到项目里,然后你的xml内容要改一下,里面用双引号:
<?xml version="1.0" encoding="UTF-8"?>
<msg>
<head>
<transcode>9999</transcode>
<time>20090305102259</time>
<version> 1.0 </version>
</head>
<body>
<msg errorCode="9001" msg="系统异常" />
</body>
</msg>
代码
import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class GetXMLMessage {
public static void main(String[] args) throws DocumentException
{
//读取XML文件,我直接放根目录下
File file = new File("your.xml");
Document doc = new SAXReader().read(file);
//获取根节点:即msg节点
Element element =doc.getRootElement();
//遍历子节点,也即<head>和<body>。
Iterator it = element.elementIterator();
while(it.hasNext())
{
Element subelement = (Element)it.next();
System.out.println("父节点"+subelement.getName());
//遍历head下面的transcode time cerson 和body下面的msg
Iterator subit = subelement.elementIterator();
while(subit.hasNext())
{
Element subsubelement =(Element) subit.next();
System.out.print("子节点"+subsubelement.getName()+" ");
System.out.println(subsubelement.getStringValue());
//如果有属性,则输出属性
List attributelist = subsubelement.attributes();
for(Object i:attributelist)
{
Attribute attribute =(Attribute)i;
System.out.print("属性"+attribute.getName()+" ");
System.out.println(attribute.getStringValue());
}
}
}
}
}
最后输出:
父节点head
子节点transcode 9999
子节点time 20090305102259
子节点version 1.0
父节点body
子节点msg
属性errorCode 9001
属性msg 系统异常
C. java解析文件,按照分隔符=切开,存入数组中。
import java.util.*;
import java.io.*;
public class FenGe
{
public static void main(String[] args) throws Exception
{
//f为你要解析的文件的路径
String f="f.txt",line=null;
ArrayList<String> al=new ArrayList<String>();
BufferedReader br=new BufferedReader(new FileReader(f));
String[] arr=null;
while(null!=(line=br.readLine()))
{
al.addAll(Arrays.asList(line.split("=")));
}
br.close();
arr=new String[al.size()];
al.toArray(arr);
for(String e : arr)
{
System.out.println(e);
}
}
}
D. java怎么解析指定的文件,并保存到数据库
如果txt,xls,按行读,用特定的字符作分隔符来拆分,读一行处理一行,直到结束,导入都是这样的.
给个txt的案例给你看看:
File logFile = new java.io.File("d://PartInputLog.txt"); //
ins = form.getFile().getInputStream(); //读取数据流
workBook = Workbook.getWorkbook(ins); //打开工作簿
sheet = workBook.getSheet(0); //打开SHEET
int rowSize = sheet.getRows(); //获取总行数
for(int i=0;i<rowSize;i++){
if(sheet.getCell(0, i).getContents().trim().equals(""))break;
String gysNo = sheet.getCell(0, i).getContents().trim();//获取第i行第1列的具体数据
String bpNo = sheet.getCell(1, i).getContents().trim(); //获取第i行第2列的具体数据
String numStr = sheet.getCell(2, i).getContents().trim(); //获取第i行第3列的具体数据
.................................................
}
//数据都可以读取到剩下的就在循环中插入了