當前位置:首頁 » 編程語言 » java分析文件

java分析文件

發布時間: 2022-12-22 08:42:50

java逐行分析text文件

publicstaticvoidreadTxtFile(StringfilePath){
try{
Stringencoding="GBK";
Filefile=newFile(filePath);
if(file.isFile()&&file.exists()){//判斷文件是否存在
InputStreamReaderread=newInputStreamReader(
newFileInputStream(file),encoding);//考慮到編碼格式
BufferedReaderbufferedReader=newBufferedReader(read);
StringlineTxt=null;
while((lineTxt=bufferedReader.readLine())!=null){
System.out.println(lineTxt.split("|||||||||||||")[0].split("|")[0]);
System.out.println(lineTxt.split("|||||||||||||")[0].split("|")[1]);
System.out.println(lineTxt.split("|||||||||||||")[0].split("|")[2].replace("|||||||||||||",""));
}

}
read.close();
}else{
System.out.println("找不到指定的文件");
}
}catch(Exceptione){
System.out.println("讀取文件內容出錯");
e.printStackTrace();
}
}

Ⅱ java解析word文檔有哪些方法

java讀取word文檔時,雖然網上介紹了很多插件poi、java2Word、jacob、itext等等,poi無法讀取格式(新的API估
計行好像還在處於研發階段,不太穩定,做項目不太敢用);java2Word、jacob容易報錯找不到注冊,比較詭異,我曾經在不同的機器上試過,操作
方法完全一致,有的機器不報錯,有的報錯,去他們論壇找高人解決也說不出原因,項目部署用它有點玄;itxt好像寫很方便但是我查了好久資料沒有見到過關
於讀的好辦法。經過一番選擇還是折中點採用rtf最好,畢竟rtf是開源格式,不需要藉助任何插件,只需基本IO操作外加編碼轉換即可。rtf格式文件表
面看來和doc沒啥區別,都可以用word打開,各種格式都可以設定。

----- 實現的功能:讀取rtf模板內容(格式和文本內容),替換變化部分,形成新的rtf文檔。

----- 實現思路:模板中固定部分手動輸入,變化的部分用$info$表示,只需替換$info$即可。

1、採用位元組的形式讀取rtf模板內容

2、將可變的內容字元串轉為rtf編碼

3、替換原文中的可變部分,形成新的rtf文檔

主要程序如下:

public String bin2hex(String bin) {

char[] digital = "0123456789ABCDEF".toCharArray();

StringBuffer sb = new StringBuffer("");

byte[] bs = bin.getBytes();

int bit;

for (int i = 0; i < bs.length;i++) {

bit = (bs[i] & 0x0f0)
>> 4;

sb.append("\\'");

sb.append(digital[bit]);

bit = bs[i] & 0x0f;

sb.append(digital[bit]);

}

return sb.toString();

}

public String readByteRtf(InputStream ins, String path){

String sourcecontent =
"";

try{

ins = new
FileInputStream(path);

byte[] b
= new byte[1024];

if (ins == null) {

System.out.println("源模板文件不存在");

}

int bytesRead = 0;

while (true) {

bytesRead = ins.read(b, 0, 1024); // return final read bytes
counts

if(bytesRead == -1) {// end of InputStream

System.out.println("讀取模板文件結束");

break;

}

sourcecontent += new String(b, 0, bytesRead); // convert to string
using bytes

}

}catch(Exception e){

e.printStackTrace();

}

return sourcecontent ;

}

以上為核心代碼,剩餘部分就是替換,從新組裝java中的String.replace(oldstr,newstr);方法可以實現,在這就不貼了。源代碼部分詳見附件。

運行源代碼前提:

c盤創建YQ目錄,將附件中"模板.rtf"復制到YQ目錄之下,運行OpreatorRTF.java文件即可,就會在YQ目錄下生成文件名如:21時15分19秒_cheney_記錄.rtf
的文件。

package com;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.PrintWriter;

import java.text.SimpleDateFormat;

import java.util.Date;

public class OperatorRTF {

public String strToRtf(String content){

char[] digital = "0123456789ABCDEF".toCharArray();

StringBuffer sb = new StringBuffer("");

byte[] bs = content.getBytes();

int bit;

for (int i = 0; i < bs.length; i++) {

bit = (bs[i] & 0x0f0)
>> 4;

sb.append("\\'");

sb.append(digital[bit]);

bit = bs[i] & 0x0f;

sb.append(digital[bit]);

}

return sb.toString();

}

public String replaceRTF(String content,String replacecontent,int
flag){

String rc = strToRtf(replacecontent);

String target = "";

if(flag==0){

target = content.replace("$timetop$",rc);

}

if(flag==1){

target = content.replace("$info$",rc);

}

if(flag==2){

target = content.replace("$idea$",rc);

}

if(flag==3){

target = content.replace("$advice$",rc);

}

if(flag==4){

target = content.replace("$infosend$",rc);

}

return target;

}

public String getSavePath() {

String path = "C:\\YQ";

File fDirecotry = new File(path);

if (!fDirecotry.exists()) {

fDirecotry.mkdirs();

}

return path;

}

public String ToSBC(String input){

char[] c =
input.toCharArray();

for (int i =
0; i < c.length; i++){

if (c[i] == 32){

c[i] = (char) 12288;

continue;

}

if (c[i] < 127){

c[i] = (char) (c[i] + 65248);

}

}

return new
String(c);

}

public void rgModel(String username, String content) {

// TODO Auto-generated method stub

Date current=new Date();

SimpleDateFormat sdf=new java.text.SimpleDateFormat("yyyy-MM-dd
HH:mm:ss");

String targetname = sdf.format(current).substring(11,13) + "時";

targetname += sdf.format(current).substring(14,16) + "分";

targetname += sdf.format(current).substring(17,19) + "秒";

targetname += "_" + username +"_記錄.rtf";

String strpath = getSavePath();

String sourname = strpath+"\\"+"模板.rtf";

String sourcecontent = "";

InputStream ins = null;

try{

ins = new FileInputStream(sourname);

byte[] b = new byte[1024];

if (ins == null) {

System.out.println("源模板文件不存在");

}

int bytesRead = 0;

while (true) {

bytesRead = ins.read(b, 0, 1024); // return final read bytes
counts

if(bytesRead == -1) {// end of InputStream

System.out.println("讀取模板文件結束");

break;

}

sourcecontent += new String(b, 0, bytesRead); // convert to string
using bytes

}

}catch(Exception e){

e.printStackTrace();

}

String targetcontent = "";

String array[] = content.split("~");

for(int i=0;i<array.length;i++){

if(i==0){

targetcontent = replaceRTF(sourcecontent, array[i], i);

}else{

targetcontent = replaceRTF(targetcontent, array[i], i);

}

}

try {

FileWriter fw = new FileWriter(getSavePath()+"\\" +
targetname,true);

PrintWriter out = new PrintWriter(fw);

if(targetcontent.equals("")||targetcontent==""){

out.println(sourcecontent);

}else{

out.println(targetcontent);

}

out.close();

fw.close();

System.out.println(getSavePath()+" 該目錄下生成文件" +
targetname + " 成功");

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

OperatorRTF oRTF = new OperatorRTF();

String content =
"2008年10月12日9時-2008年10月12日6時~我們參照檢驗葯品的方法~我們參照檢驗葯品的方法~我們參照檢驗葯品的方法~我們參照檢驗葯品的方法";

oRTF.rgModel("cheney",content);

}

}

Ⅲ java中如何解析文件目錄結構類似的數據

20世紀90年代,硬體領域出現了單片式計算機系統,這種價格低廉的系統一出現就立即引起了自
由於C++所具有的優勢,該項目組的研究人員首先考慮採用C++來編寫程序。但對於硬體資源極其匱乏的單片式系統來說,C++程序過於復雜和龐大。另外由於消費電子產品所採用的嵌入式處理器晶元的種類繁雜,如何讓編寫的程序跨平台運行也是個難題。為了解決困難,他們首先著眼於語言的開發,假設了一種結構簡單、符合嵌入式應用需要的硬體平台體系結構並為其制定了相應的規范,其中就定義了這種硬體平台的二進制機器碼指令系統(即後來成為"位元組碼"的指令系統),以待語言開發成功後,能有半導體晶元生產商開發和生產這種硬體平台。對於新語言的設計,Sun公司研發人員並沒有開發一種全新的語言,而是根據嵌入式軟體的要求,對C++進行了改造,去除了留在C++的一些不太實用及影響安全的成分,並結合嵌入式系統的實時性要求,開發了一種稱為Oak的面向對象語言。

1994年6、7月間,在經歷了一場歷時三天的討論之後,團隊決定再一次改變了努力的目標,這次他們決定將該技術應用於萬維網。他們認為隨著Mosaic瀏覽器的到來,網際網路正在向同樣的高度互動的遠景演變,而這一遠景正是他們在有線電視網中看到的。作為原型,帕特里克·諾頓寫了一個小型萬維網瀏覽器WebRunner。

1995年,互聯網的蓬勃發展給了Oak機會。業界為了使死板、單調的靜態網頁能夠"靈活"起來,急需一種軟體技術來開發一種程序,這種程序可以通過網路傳播並且能夠跨平台運行。於是,世界各大IT企業為此紛紛投入了大量的人力、物力和財力。這個時候,Sun公司想起了那個被擱置起來很久的Oak,並且重新審視了那個用軟體編寫的試驗平台,由於它是按照嵌入式系統硬體平台體系結構進行編寫的,所以非常小,特別適用於網路上的傳輸系統,而Oak也是一種精簡的語言,程序非常小,適合在網路上傳輸。Sun公司首先推出了可以嵌入網頁並且可以隨同網頁在網路上傳輸的Applet(Applet是一種將小程序嵌入到網頁中進行執行的技術),並將Oak更名為Java(在申請注冊商標時,發現Oak已經被人使用了,再想了一系列名字之後,最終,使用了提議者在喝一杯Java咖啡時無意提到的Java詞語)。5月23日,Sun公司在Sun world會議上正式發布Java和HotJava瀏覽器。IBM、Apple、DEC、Adobe、HP、Oracle、Netscape和微軟等各大公司都紛紛停止了自己的相關開發項目,競相購買了Java使用許可證,並為自己的產品開發了相應的Java平台。

1996年1月,Sun公司發布了Java的第一個開發工具包(JDK 1.0),這是Java發展歷程中的重要里程碑,標志著Java成為一種獨立的開發工具。9月,約8.3萬個網頁應用了Java技術來製作。10月,Sun公司發布了Java平台的第一個即時(JIT)編譯器。

1997年2月,JDK 1.1面世,在隨後的3周時間里,達到了22萬次的下載量。4月2日,Java One會議召開,參會者逾一萬人,創當時全球同類會議規模之紀錄。9月,Java Developer Connection社區成員超過10萬。

1998年12月8日,第二代Java平台的企業版J2EE發布。1999年6月,Sun公司發布了第二代Java平台(簡稱為Java2)的3個版本:J2ME(Java2 Micro Edition,Java2平台的微型版),應用於移動、無線及有限資源的環境;J2SE(Java 2 Standard Edition,Java 2平台的標准版),應用於桌面環境;J2EE(Java 2Enterprise Edition,Java 2平台的企業版),應用於基於Java的應用伺服器。Java 2平台的發布,是Java發展過程中最重要的一個里程碑,標志著Java的應用開始普及。

1999年4月27日,HotSpot虛擬機發布。HotSpot虛擬機發布時是作為JDK 1.2的附加程序提供的,後來它成為了JDK 1.3及之後所有版本的Sun JDK的默認虛擬機 。

2000年5月,JDK1.3、JDK1.4和J2SE1.3相繼發布,幾周後其獲得了Apple公司Mac OS X的工業標準的支持。2001年9月24日,J2EE1.3發布。2002年2月26日,J2SE1.4發布。自此Java的計算能力有了大幅提升,與J2SE1.3相比,其多了近62%的類和介面。在這些新特性當中,還提供了廣泛的XML支持、安全套接字(Socket)支持(通過SSL與TLS協議)、全新的I/OAPI、正則表達式、日誌與斷言。2004年9月30日,J2SE1.5發布,成為Java語言發展史上的又一里程碑。為了表示該版本的重要性,J2SE 1.5更名為Java SE 5.0(內部版本號1.5.0),代號為"Tiger",Tiger包含了從1996年發布1.0版本以來的最重大的更新,其中包括泛型支持、基本類型的自動裝箱、改進的循環、枚舉類型、格式化I/O及可變參數。

2005年6月,在Java One大會上,Sun公司發布了Java SE 6。此時,Java的各種版本已經更名,已取消其中的數字2,如J2EE更名為JavaEE,J2SE更名為JavaSE,J2ME更名為JavaME。

2006年11月13日,Java技術的發明者Sun公司宣布,將Java技術作為免費軟體對外發布。Sun公司正式發布的有關Java平台標准版的第一批源代碼,以及Java迷你版的可執行源代碼。從2007年3月起,全世界所有的開發人員均可對Java源代碼進行修改 。

2009年,甲骨文公司宣布收購Sun 。2010年,Java編程語言的共同創始人之一詹姆斯·高斯林從Oracle公司辭職。2011年,甲骨文公司舉行了全球性的活動,以慶祝Java7的推出,隨後Java7正式發布。2014年,甲骨文公司發布了Java8正式版 。

Ⅳ 用java讀取兩個txt文件並分析其中的數據

兩遍掃描,第一遍掃描b.txt,提取關鍵字,保存到一個Hash查找表結構中(查找快),第二遍掃描a.txt,在Hash查找表中找出現的元素。

Ⅳ Java裡面怎麼解析xml文件的內容

Java解析xml代碼,我是用dom4j讀取的,
import java.io.File;
import java.util.Iterator;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Dom4JReader {

public Dom4JReader() {

}
/**
*
* @Function 獲取xml文件里符合要求的數據
*/
public void getDom() {

SAXReader sr = new SAXReader();

try {
//獲取applicationContext.xml文件的對象
Document doc = sr.read(new File("applicationContext.xml"));
//獲得跟節點
Element root = doc.getRootElement();
//// 枚舉所有子節點
for (Iterator i = root.elementIterator("bean"); i.hasNext();) {
//獲取bean節點
Element bean = (Element) i.next();
// 枚舉名稱為bean的節點
for (Iterator j = bean.attributeIterator(); j.hasNext();) {
//獲取bean節點的所有屬性
Attribute attr = (Attribute) j.next();
//判斷屬性的值如果為fileUploadBo
if (attr.getText().equals("fileUploadBo")) {
//列印出這個bean節點的所有信息
System.out.println(bean.asXML());
}
}
}

} catch (DocumentException e) {

e.printStackTrace();
}
}

}
這段代碼要執行的話,要導入dom4j的包,還有
//獲取applicationContext.xml文件的對象
Document doc = sr.read(new File("applicationContext.xml"));
在src下有這個xml文件。

Ⅵ 如何用java解析CSV文件

思想:先獲取csv文件的路徑,通過BufferedReader類去讀該路徑中的文件,使用readLine方法進行逐行讀取。

注意:使用readLine方法後會自動轉到下一行。因此在判斷是否為空後得先將讀取到的內容賦值給一變數,在循環中使用該變數即可。

publicstaticvoidmain(String[]args)
{
Filecsv=newFile("C:\Users\chenxumin\Desktop\Result.csv");//CSV文件路徑
BufferedReaderbr=null;
try
{
br=newBufferedReader(newFileReader(csv));
}catch(FileNotFoundExceptione)
{
e.printStackTrace();
}
Stringline="";
StringeveryLine="";
try{
List<String>allString=newArrayList<>();
while((line=br.readLine())!=null)//讀取到的內容給line變數
{
everyLine=line;
System.out.println(everyLine);
allString.add(everyLine);
}
System.out.println("csv表格中所有行數:"+allString.size());
}catch(IOExceptione)
{
e.printStackTrace();
}

}

Ⅶ 如何用JAVA解析txt文件

java讀取txt文件內容。可以作如下理解:
首先獲得一個文件句柄。File file = new File(); file即為文件句柄。兩人之間連通電話網路了。接下來可以開始打電話了。
通過這條線路讀取甲方的信息:new FileInputStream(file) 目前這個信息已經讀進來內存當中了。接下來需要解讀成乙方可以理解的東西
既然你使用了FileInputStream()。那麼對應的需要使用InputStreamReader()這個方法進行解讀剛才裝進來內存當中的數據
解讀完成後要輸出呀。那當然要轉換成IO可以識別的數據呀。那就需要調用位元組碼讀取的方法BufferedReader()。同時使用bufferedReader()的readline()方法讀取txt文件中的每一行數據哈。
package com.campu;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.Reader;

public class H20121012 {
/**
* 功能:Java讀取txt文件的內容
* 步驟:1:先獲得文件句柄
* 2:獲得文件句柄當做是輸入一個位元組碼流,需要對這個輸入流進行讀取
* 3:讀取到輸入流後,需要讀取生成位元組流
* 4:一行一行的輸出。readline()。
* 備註:需要考慮的是異常情況
* @param filePath
*/
public static void readTxtFile(String filePath){
try {
String encoding="GBK";
File file=new File(filePath);
if(file.isFile() && file.exists()){ //判斷文件是否存在
InputStreamReader read = new InputStreamReader(
new FileInputStream(file),encoding);//考慮到編碼格式
BufferedReader bufferedReader = new BufferedReader(read);
String lineTxt = null;
while((lineTxt = bufferedReader.readLine()) != null){
System.out.println(lineTxt);
}
read.close();
}else{
System.out.println("找不到指定的文件");
}
} catch (Exception e) {
System.out.println("讀取文件內容出錯");
e.printStackTrace();
}

}

public static void main(String argv[]){
String filePath = "L:\\Apache\\htdocs\\res\\20121012.txt";
// "res/";
readTxtFile(filePath);
}

}

Ⅷ java源文件解析

建一個Student實體類封裝數據
public static List<Student> readXml() {
List<Student> list = new ArrayList<Student>();
//定義一個<a href="https://www..com/s?wd=dom%E8%A7%A3%E6%9E%90&tn=44039180_cpr&fenlei=_5y9YIZ0lQzqlpA-" target="_blank" class="-highlight">dom解析</a>器工廠實例
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
//由工廠實例得到一個<a href="https://www..com/s?wd=dom%E8%A7%A3%E6%9E%90&tn=44039180_cpr&fenlei=_5y9YIZ0lQzqlpA-" target="_blank" class="-highlight">dom解析</a>器
DocumentBuilder dom = factory.newDocumentBuilder();
//找到<a href="https://www..com/s?wd=xml%E6%96%87%E6%A1%A3&tn=44039180_cpr&fenlei=_5y9YIZ0lQzqlpA-" target="_blank" class="-highlight">xml文檔</a>
File file=new File("src/com/jereh/ch05/Students.xml");
Document doc=dom.parse(file);
//
Element root = doc.getDocumentElement();
NodeList stuNodeList = root.getChildNodes();
for (int i = 0; i < stuNodeList.getLength(); i++) {
Node stu = stuNodeList.item(i);
Student student = new Student();
if (stu != null && stu.getNodeType() == Node.ELEMENT_NODE) {
// System.out.println(stu);
Element stuElement = (Element) stu;
student.setNo(stuElement.getAttribute("id"));
// stu.getAttributes().getNamedItem(null);
// Element stu=(Element)stuNodeList
NodeList info = stuElement.getChildNodes();
for (int j = 0; j < info.getLength(); j++) {
info.item(j).getNodeName();
Node n = info.item(j);
if ("name".equals(n.getNodeName())) {
// n.getFirstChild().getNodeValue();
student.setName(n.getLastChild().getNodeValue());
} else if ("age".equals(n.getNodeName())) {
student.setAge(Integer.parseInt(n.getFirstChild()
.getNodeValue()));
}
list.add(student);
}
}
}
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// System.out.println(root.getNodeValue());
return list;
}

Ⅸ java解析xml文件

SaxReader reader = new SaxReader();
Document doc = reader.read(new File("class.xml"));
Element element = doc.getRootElement();//獲取根元素

迭代器:取根元素下的子元素名稱
Iterator<Element> iter = element.elementIterator();
while(iter.hashNext){
Element el = (Element)iter.next();
el.getName();//獲取元素名稱
el.getText();//獲取元素值
}

//獲取屬性名稱、值
Iterator<Attribute> iter1 = element.attributeIterator();
while(iter1.hashNext()){
Attribute el = (Attribute)iter1.next();
el.getName();el.getValue();//獲取屬性名稱和值
}

如果取所有,則用遞歸取:
public void getInfo(Element root){
Iterator<Element> iter = root.getElementIterator();
while(iter.hashNext()){
Element element = (Element)iter.next();
getInfo(element);//自己調用自己 遞歸方法
}
}

熱點內容
不用internet打開ftp 發布:2025-05-15 23:06:00 瀏覽:152
sql字元串取數字 發布:2025-05-15 22:57:45 瀏覽:123
推薦編程課 發布:2025-05-15 22:34:12 瀏覽:617
表拒絕訪問 發布:2025-05-15 22:29:37 瀏覽:978
電腦怎樣解壓文件 發布:2025-05-15 22:25:32 瀏覽:439
dns伺服器怎麼看 發布:2025-05-15 22:17:27 瀏覽:151
3dm的壓縮包 發布:2025-05-15 22:09:23 瀏覽:662
和存儲字長 發布:2025-05-15 21:54:09 瀏覽:515
用什麼寫c語言 發布:2025-05-15 21:35:56 瀏覽:418
linux讀取u盤 發布:2025-05-15 21:32:13 瀏覽:508