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列的具體數據
.................................................
}
//數據都可以讀取到剩下的就在循環中插入了