導航:首頁 > 編程語言 > javaclasspath讀取文件

javaclasspath讀取文件

發布時間:2022-04-23 21:48:32

java怎樣讀取html文件

java讀取html文件跟讀取普通文件一樣,都是使用輸入輸出流,但是java讀取html文件之後還需要解析,使用Jsoup對html進行解析。下面是一個java讀取帶表格的任意html文件,並把html文件轉換成excel的例子。

要求:要求能夠實現給出任意帶table表格的html文件,生成與表格相同內容的excel文件,附件可以作為測試文件,提供給定的roster.html文件,通過java代碼,實現生成與html頁面的table相同樣式的roster.xls文件。

首先看roster.html:

importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileReader;
importjava.io.IOException;
importjxl.Workbook;
importjxl.write.Label;
importjxl.write.WritableCellFormat;
importjxl.write.WritableFont;
importjxl.write.WritableSheet;
importjxl.write.WritableWorkbook;
importjxl.write.WriteException;
importjxl.write.biff.RowsExceededException;
importorg.jsoup.Jsoup;
importorg.jsoup.nodes.Document;
importorg.jsoup.nodes.Element;
importorg.jsoup.select.Elements;
publicclassHTMLTOExcel{
publicstaticvoidmain(Stringargs[])throwsIOException{
///讀取classpath目錄下面的路徑
Stringpath=HTMLTOExcel.class.getResource("/").getPath();
path+="roster.html";
toExcel(path,"roster");
}
//得到Document並且設置編碼格式
publicstaticDocumentgetDoc(StringfileName)throwsIOException{
FilemyFile=newFile(fileName);
Documentdoc=Jsoup.parse(myFile,"GBK","");
returndoc;
}
///這個方法用於根據trs行數和sheet畫出整個表格
publicstaticvoidmergeColRow(Elementstrs,WritableSheetsheet)throwsRowsExceededException,WriteException{
int[][]rowhb=newint[300][50];
for(inti=0;i<trs.size();i++){
Elementtr=trs.get(i);
Elementstds=tr.getElementsByTag("td");

intrealColNum=0;
for(intj=0;j<tds.size();j++){
Elementtd=tds.get(j);
if(rowhb[i][realColNum]!=0){
realColNum=getRealColNum(rowhb,i,realColNum);
}
introwspan=1;
intcolspan=1;
if(td.attr("rowspan")!=""){
rowspan=Integer.parseInt(td.attr("rowspan"));
}
if(td.attr("colspan")!=""){
colspan=Integer.parseInt(td.attr("colspan"));
}
Stringtext=td.text();
drawMegerCell(rowspan,colspan,sheet,realColNum,i,text,rowhb);
realColNum=realColNum+colspan;
}

}
}
///這個方法用於根據樣式畫出單元格,並且根據rowpan和colspan合並單元格
publicstaticvoiddrawMegerCell(introwspan,intcolspan,WritableSheetsheet,intrealColNum,intrealRowNum,Stringtext,int[][]rowhb)throwsRowsExceededException,WriteException{
for(inti=0;i<rowspan;i++){
for(intj=0;j<colspan;j++){
if(i!=0||j!=0){
text="";
}
Labellabel=newLabel(realColNum+j,realRowNum+i,text);
WritableFontcountents=newWritableFont(WritableFont.TIMES,10);//設置單元格內容,字型大小12
WritableCellFormatcellf=newWritableCellFormat(countents);
cellf.setAlignment(jxl.format.Alignment.CENTRE);//把水平對齊方式指定為居中
cellf.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//把垂直對齊方式指定為居
label.setCellFormat(cellf);
sheet.addCell(label);
rowhb[realRowNum+i][realColNum+j]=1;
}
}
sheet.mergeCells(realColNum,realRowNum,realColNum+colspan-1,realRowNum+rowspan-1);
}
publicstaticintgetRealColNum(int[][]rowhb,inti,intrealColNum){
while(rowhb[i][realColNum]!=0){
realColNum++;
}
returnrealColNum;
}
///根據colgroups設置表格的列寬
publicstaticvoidsetColWidth(Elementscolgroups,WritableSheetsheet){
if(colgroups.size()>0){
Elementcolgroup=colgroups.get(0);
Elementscols=colgroup.getElementsByTag("col");
for(inti=0;i<cols.size();i++){
Elementcol=cols.get(i);
Stringstrwd=col.attr("width");
if(col.attr("width")!=""){
intwd=Integer.parseInt(strwd);
sheet.setColumnView(i,wd/8);
}

}

}
}
//toExcel是根據html文件地址生成對應的xls
publicstaticvoidtoExcel(StringfileName,StringexcelName)throwsIOException{
Documentdoc=getDoc(fileName);
Stringtitle=doc.title();
///得到樣式,以後可以根據正則表達式解析css,暫且沒有找到cssparse
Elementsstyle=doc.getElementsByTag("style");
///得到Table,demo只演示輸入一個table,以後可以用循環遍歷tables集合輸入所有table
Elementstables=doc.getElementsByTag("TABLE");
if(tables.size()==0){
return;
}
Elementtable=tables.get(0);
//得到所有行
Elementstrs=table.getElementsByTag("tr");
///得到列寬集合
Elementscolgroups=table.getElementsByTag("colgroup");

try{
//文件保存到classpath目錄下面
Stringpath=HTMLTOExcel.class.getResource("/").getPath();
path+=excelName+".xls";
System.out.println(path);
WritableWorkbookbook=Workbook.createWorkbook(newFile(path));
WritableSheetsheet=book.createSheet("人事關系",0);
setColWidth(colgroups,sheet);
mergeColRow(trs,sheet);
book.write();
book.close();
}catch(RowsExceededExceptione){
e.printStackTrace();
}catch(WriteExceptione){
e.printStackTrace();
}
}
}

解析html文件的例子文檔地址:http://blog.csdn.net/androidwuyou/article/details/52636821

⑵ 關於java中的classpath

你好,不是輸入classpath,正確如下
首先介紹一下環境變數的設置方法:(這里以jdk1.6來安裝,其他版本一樣)在把jdk安裝到計算機中之後,我們來進行設置使java環境能夠使用。
首先右鍵點我的電腦。打開屬性。然後選擇「高級」裡面的「環境變數」,在新的打開界面中的系統變數需要設置三個屬性「JAVA_HOME」、「path」、「classpath」,其中在沒安裝過jdk的環境下。path屬性是本來存在的。而JAVA_HOME和classpath是不存在的。

點「新建」,然後在變數名寫上JAVA_HOME,顧名其意該變數的含義就是java的安裝路徑,呵呵,然後在變數值寫入剛才安裝的路徑「C:/jdk1.6」。(註:
如果安裝的路徑不是磁碟C或者不是在jdk1.6這個文件夾,可對應修改。以下文字都是假定安裝在C:/jdk1.6裡面。)

其次在系統變數裡面找到path,然後點編輯,path變數的含義就是系統在任何路徑下都可以識別java命令,則變數值為「.;%JAVA_HOME%/bin」,(其中「%JAVA_HOME%」的意思為剛才設置JAVA_HOME的值),也可以直接寫上「C:/jdk1.6/bin」

最後再點「新建」,然後在變數名上寫classpath,該變數的含義是為java載入類(class or
lib)路徑,只有類在classpath中,java命令才能識別。其值為「.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/toos.jar
(要加.表示當前路徑)」,與相同「%JAVA_HOME%有相同意思」

以上三個變數設置完畢,則按「確定」直至屬性窗口消失,下來是驗證看看安裝是否成功。先打開「開始」->「運行」,打入「cmd」,進入dos系統界面。然後打「java
-version」,如果安裝成功。系統會顯示java version jdk"1.6.0"。

確保安裝在C盤文件名為jdk1.6,環境變數直接復制就可以了
,在dos界面中輸入javac來查看該命令是否合法,同樣輸入java來查看該命令是否合法
這樣環境變數就設置好了,下面進行對PATH,CLASSPTH,JAVA_HOME的講解以下為置JAVA_HOME,CLASSPATH,PATH的目的:
1,設置JAVA_HOME:

一、為了方便引用,比如,你JDK安裝在C:/Program Files/Java/jdk1.6.0目錄里,則設置JAVA_HOME為該目錄路徑,
那麼以後你要使用這個路徑的時候, 只需輸入%JAVA_HOME%即可, 避免每次引用都輸入很長的路徑串;
二、歸一原則,
當你JDK路徑被迫改變的時候, 你僅需更改JAVA_HOME的變數值即可, 否則,你就要更改任何用絕對路徑引用JDK目錄的文檔, 要是萬一你沒有改全,
某個程序找不到JDK, 後果是可想而知的----系統崩潰!
三、第三方軟體會引用約定好的JAVA_HOME變數, 不然,
你將不能正常使用該軟體, 以後用JAVA久了就會知道, 要是某個軟體不能正常使用, 不妨想想是不是這個問題.

2,設置CLASSPATH:

這是一個很有趣,當然也比較折磨初學者的問題, 這個變數設置的目的是為了程序能找到相應的".class"文件, 不妨舉個例子:
編譯一個JAVA程序---A.java, 會得到一個A.class的類文件,你在當前目錄下執行java A, 將會得到相應的結果(前提是你已經設置CLASSPATH為"."). 現在, 你把A.class移到別的目錄下(例如:"e:/"), 執行java A,
將會有NoClassDefFindError的異常,原因就是找不到.class文件, 現在你把CLASSPATH增加為:".;e:/"再運行java A,
看看會有什麼結果~~:)~~~, 一切正常, java命令通過CLASSPATH找到了.class文件!

3,設置PATH:

道理很簡單, 你想在任何時候都使用%JAVA_HOME%/bin/java 等來執行java命令嗎, 當然不會, 於是, 你可以選擇把
%JAVA_HOME%/bin添加到PATH路徑下, 這樣,
我們在任何路徑下就可以僅用java來執行命令了.(當你在命令提示符窗口輸入你個代碼時,操作系統會在當前目錄和PATH變數目錄里查找相應的應用程序, 並且執行.)
======================錯誤案例NoClassDefFound:
當 Java 虛擬機或 ClassLoader
實例試圖在類的定義中載入(作為通常方法調用的一部分或者作為使用new 表達式創建的新實例的一部分),但無法找到該類的定義時,拋出此異常。

問題出在你環境變數設置錯誤:
上述樓主把C:/Program
Files/Java/jdk1.5.0_11/lib/dt.jar;C:/Program
Files/Java/jdk1.5.0_11/jre/lib/rt.jar放在classpath的環境變數中是正確的

⑶ java怎麼讀取classpath文件

寫Java程序時會經常從classpath下讀取文件,是時候該整理一下了,並在不斷深入的過程中,陸續補充上。
現在Java project 都以maven項目居多, 比如像下面這樣的一個項目結構:

⑷ java 怎麼獲取classpath列表

環境變數里有classpath,也可用通過java的運行參數 -cp把classpath設上去。

⑸ java classpath 如何設置

最簡單的方法是:

set path= D:javajdkin;然後再輸入javac 看看。

⑹ java 關於classpath問題 請詳細點我是新手 謝謝了

.classpath顧名思義,就是把四面八方的jar都通過字元串的形式寫入文件,然後供項目調用的,這樣既方便,又簡潔,還可以根據這個進行打包。java 命令的格式也可以是絕對路徑,所以看到這些路徑字元串,照樣可以打包的。

C:\Documents and Settings\Administrator>java
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)

⑺ javac讀取classpath值嗎

肯定的了,classpath,翻譯過來就是class文件的路徑。所以應該和javac命令沒有關系的。他還有一個參數-d,下面是網路過來的。如果不進入.java文件所在的目錄,可以直接指定絕對路徑,而且可以一次編譯多個文件

以下三個命令可以滿足你的要求。
javac-dd: estd:.java
javac-dd: est-cpd: estc:a.java
java-cpd: esta
說明-d指定生成的class文件存放路徑
-cp指定引用的class文件存放路徑

⑻ JAVA 的classpath

classpath指的是Java進行編譯,運行時需要用到的jar包位置.
一般設置為classpath= ".;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar"就可以了
注意是 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
最前面有個點,不要把點漏了。

下面是網上摘的一些比較好的講解,希望對你有所幫助:
CLASSPATH環境變數。作用是指定命令搜索路徑,在命令行下面執行命令如javac編譯java程序時,它會到PATH變數所指定的路徑中查找看是否能找到相應的命令程序。我們需要把jdk安裝目錄下的bin目錄增加到現有的PATH變數中,bin目錄中包含經常要用到的可執行文件如javac/java/javadoc等待,設置好PATH變數後,就可以在任何目錄下執行javac/java等工具了。

CLASSPATH是什麼?它的作用是什麼?
它是javac編譯器的一個環境變數。
它的作用與import、package關鍵字有關。
當你寫下improt java.util.*時,編譯器面對import關鍵字時,就知道你要引入java.util這個package中的類;但是編譯器如何知道你把這個package放在哪裡了呢?所以你首先得告訴編譯器這個package的所在位置;如何告訴它呢?就是設置CLASSPATH啦 :) 如果java.util這個package在c:\jdk\ 目錄下,你得把c:\jdk\這個路徑設置到CLASSPATH中去!當編譯器面對import java.util.*這個語句時,它先會查找CLASSPATH所指定的目錄,並檢視子目錄java\util是否存在,然後找出名稱吻合的已編譯文件(.class文件)。如果沒有找到就會報錯!
CLASSPATH有點像c\c++編譯器中的INCLUDE路徑的設置哦,是不是?當c\c++編譯器遇到include <iostream>這樣的語句,它是如何運作的?哦,其實道理都差不多!搜索INCLUDE路徑,檢視文件!
當你自己開發一個package時,然後想要用這個package中的類;自然,你也得把這個package所在的目錄設置到CLASSPATH中去!
CLASSPATH的設定,對JAVA的初學者而言是一件棘手的事。所以Sun讓JAVA2的JDK更聰明一些。你會發現,在你安裝之後,即使完全沒有設定CLASSPATH,你仍然能夠編譯基本的JAVA程序,並且加以執行。

⑼ java如何獲取classpath中某文件的輸出流

InputStream is = this.getClass().getResourceAsStream("/文件相對路徑");

(Stringname)查找具有給定名稱的資源。查找與給定類相關的資源的規則是通過定義類的classloader

實現的。此方法委託此對象的類載入器。如果此對象通過引導類載入器載入,則此方法將委託給ClassLoader.getSystemResourceAsStream(java.lang.String)。


在委託前,使用下面的演算法從給定的資源名構造一個絕對資源名:

如果name以'/'開始('u002f'),則絕對資源名是'/'

後面的name的一部分。

否則,絕對名具有以下形式:

modified_package_name/name其中modified_package_name是此對象的包名,該名用'/'取代了'.'

('u002e')。


有問題再追問,goodluck!

⑽ 編譯JAVA源文件無法讀取!請看問題補充

盡量切換到當前目錄下進行編譯
首先classpath環境變數是為了指定java庫文件的位置,前面加一個「.」是為了指定當前目錄
你明白了這一點就不難解釋了
你如果想在別的別的目錄下編譯這個源文件,只需要將這個源文件所在路徑加到classpath下面即可

閱讀全文

與javaclasspath讀取文件相關的資料

熱點內容
linux打包命令targz 瀏覽:996
抖音app是哪個 瀏覽:407
蘋果app怎麼上架 瀏覽:255
NA伺服器地址 瀏覽:427
我的世界如何初始化伺服器 瀏覽:97
哪個手機app天氣預報最准 瀏覽:752
怎樣把視頻壓縮至25m 瀏覽:570
vivox27文件夾怎麼改變 瀏覽:727
新手玩狼人殺用什麼app 瀏覽:615
pdf在線查看 瀏覽:954
安卓tv90如何關閉後台 瀏覽:683
php讀取word亂碼 瀏覽:755
minicom源碼 瀏覽:1001
海爾冷櫃壓縮機 瀏覽:416
聯通伺服器如何調試信號 瀏覽:136
stata新命令 瀏覽:941
單調棧演算法python 瀏覽:606
微信解壓游戲怎麼下載 瀏覽:962
忍三伺服器不同如何登上賬號 瀏覽:822
php求積 瀏覽:297