导航:首页 > 编程语言 > 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读取文件相关的资料

热点内容
云服务器关机网址不见了 浏览:69
余冠英pdf 浏览:755
开发一个app上市需要什么步骤 浏览:28
phpsleep方法 浏览:430
时间同步服务器ip地址6 浏览:926
钢琴谱pdf下载 浏览:524
香港阿里云服务器怎么封udp 浏览:875
APp买海鲜到哪里 浏览:501
辽油社保app总提示更新怎么办 浏览:586
导入源码教程视频 浏览:613
天翼贷app在哪里下载 浏览:186
app开发源码查看器 浏览:516
程序员发展到了一个瓶颈 浏览:120
程序员去机房干嘛 浏览:697
英雄训练师怎么看曾经服务器 浏览:546
魔兽世界单机输入gm命令 浏览:372
51单片机最大负跳距是多少 浏览:418
android聊天控件 浏览:128
导致压缩机坏的原因 浏览:295
如何多次选取文件夹 浏览:280