(1)按字節(jié)從文件讀取內(nèi)容

創(chuàng)新互聯(lián)是專業(yè)的咸寧網(wǎng)站建設(shè)公司,咸寧接單;提供成都做網(wǎng)站、網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行咸寧網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
(2)或者按字符讀取,但是要指定編碼……
是這樣的。
你打開命令行窗口,然后輸入 cd "Program Files",回車;
簡(jiǎn)單點(diǎn),也可以輸入cd P ,然后按Tab鍵,會(huì)給你自己補(bǔ)全的,要是你按了出來的不是 "Program Files",那你再按Tab,直到出來為止。
剩下的。。。就是JAVA的事了 。。
JAVAC 命令詳解
結(jié)構(gòu)
javac [ options ] [ sourcefiles ] [ @files ]
參數(shù)可按任意次序排列。
options
命令行選項(xiàng)。
sourcefiles
一個(gè)或多個(gè)要編譯的源文件(例如 MyClass.java)。
@files
一個(gè)或多個(gè)對(duì)源文件進(jìn)行列表的文件。
說明
javac
有兩種方法可將源代碼文件名傳遞給 javac:
?如果源文件數(shù)量少,在命令行上列出文件名即可。
?如果源文件數(shù)量多,則將源文件名列在一個(gè)文件中,名稱間用空格或回車行來進(jìn)行分隔。然后在 javac 命令行中使用該列表文件名,文件名前冠以 @ 字符。
源代碼文件名稱必須含有 .java 后綴,類文件名稱必須含有 .class 后綴,源文件和類文件都必須有識(shí)別該類的根名。例如,名為 MyClass 的類將寫在名為 MyClass.java的源文件中,并被編譯為字節(jié)碼類文件 MyClass.class。
內(nèi)部類定義產(chǎn)生附加的類文件。這些類文件的名稱將內(nèi)部類和外部類的名稱結(jié)合在一起,例如 MyClass$MyInnerClass.class。
應(yīng)當(dāng)將源文件安排在反映其包樹結(jié)構(gòu)的目錄樹中。例如,如果將所有的源文件放在 /workspace 中,那么 com.mysoft.mypack.MyClass 的代碼應(yīng)該在 \workspace\com\mysoft\mypack\MyClass.java 中。
缺省情況下,編譯器將每個(gè)類文件與其源文件放在同一目錄中。可用 -d 選項(xiàng)(請(qǐng)參閱后面的選項(xiàng))指定其它目標(biāo)目錄。
工具讀取用 Java 編程語言編寫的類和接口定義,并將它們編譯成字節(jié)碼類文件。
查找類型
當(dāng)編譯源文件時(shí),編譯器常常需要它還沒有識(shí)別出的類型的有關(guān)信息。對(duì)于源文件中使用、擴(kuò)展或?qū)崿F(xiàn)的每個(gè)類或接口,編譯器都需要其類型信息。這包括在源文件中沒有明確提及、但通過繼承提供信息的類和接口。
例如,當(dāng)擴(kuò)展 java.applet.Applet 時(shí)還要用到 Applet 的祖先類:java.awt.Panel 、 java.awt.Container、 java.awt.Component 和 java.awt.Object。
當(dāng)編譯器需要類型信息時(shí),它將查找定義類型的源文件或類文件。編譯器先在自舉類及擴(kuò)展類中查找,然后在用戶類路徑中查找。用戶類路徑通過兩種途徑來定義:通過設(shè)置 CLASSPATH 環(huán)境變量或使用 -classpath 命令行選項(xiàng)。(有關(guān)詳細(xì)資料,請(qǐng)參閱設(shè)置類路徑)。如果使用 -sourcepath 選項(xiàng),則編譯器在 sourcepath 指定的路徑中查找源文件;否則,編譯器將在用戶類路徑中查找類文件和源文件。可用-bootclasspath 和 -extdirs 選項(xiàng)來指定不同的自舉類或擴(kuò)展類;參閱下面的聯(lián)編選項(xiàng)。
成功的類型搜索可能生成類文件、源文件或兩者兼有。以下是 javac 對(duì)各種情形所進(jìn)行的處理:
?搜索結(jié)果只生成類文件而沒有源文件: javac 使用類文件。
?搜索結(jié)果只生成源文件而沒有類文件: javac 編譯源文件并使用由此生成的類文件。
?搜索結(jié)果既生成源文件又生成類文件: 確定類文件是否過時(shí)。若類文件已過時(shí),則 javac 重新編譯源文件并使用更新后的類文件。否則, javac 直接使用類文件。
缺省情況下,只要類文件比源文件舊, javac 就認(rèn)為它已過時(shí)。( -Xdepend 選項(xiàng)指定相對(duì)來說較慢但卻比較可靠的過程。)
javac
注意: javac 可以隱式編譯一些沒有在命令行中提及的源文件。用 -verbose 選項(xiàng)可跟蹤自動(dòng)編譯。
文件列表
為縮短或簡(jiǎn)化 javac 命令,可以指定一個(gè)或多個(gè)每行含有一個(gè)文件名的文件。在命令行中,采用 '@' 字符加上文件名的方法將它指定為文件列表。當(dāng) javac 遇到以 `@' 字符開頭的參數(shù)時(shí),它對(duì)那個(gè)文件中所含文件名的操作跟對(duì)命令行中文件名的操作是一樣的。這使得 Windows 命令行長(zhǎng)度不再受限制。
例如,可以在名為 sourcefiles 的文件中列出所有源文件的名稱。該文件可能形如:
MyClass1.java
MyClass2.java
MyClass3.java
然后可用下列命令運(yùn)行編譯器:
C: javac @sourcefiles
選項(xiàng)
編譯器有一批標(biāo)準(zhǔn)選項(xiàng),目前的開發(fā)環(huán)境支持這些標(biāo)準(zhǔn)選項(xiàng),將來的版本也將支持它。還有一批附加的非標(biāo)準(zhǔn)選項(xiàng)是目前的虛擬機(jī)實(shí)現(xiàn)所特有的,將來可能要有變化。非標(biāo)準(zhǔn)選項(xiàng)以 -X 打頭。
標(biāo)準(zhǔn)選項(xiàng)
-classpath 類路徑
設(shè)置用戶類路徑,它將覆蓋 CLASSPATH 環(huán)境變量中的用戶類路徑。若既未指定 CLASSPATH 又未指定 -classpath,則用戶類路徑由當(dāng)前目錄構(gòu)成。有關(guān)詳細(xì)信息,請(qǐng)參閱設(shè)置類路徑。
若未指定 -sourcepath 選項(xiàng),則將在用戶類路徑中查找類文件和源文件。
-d 目錄
設(shè)置類文件的目標(biāo)目錄。如果某個(gè)類是一個(gè)包的組成部分,則 javac 將把該類文件放入反映包名的子目錄中,必要時(shí)創(chuàng)建目錄。例如,如果指定 -d c:\myclasses 并且該類名叫 com.mypackage.MyClass,那么類文件就叫作 c:\myclasses\com\mypackage\MyClass.class。
若未指定 -d 選項(xiàng),則 javac 將把類文件放到與源文件相同的目錄中。
注意: -d 選項(xiàng)指定的目錄不會(huì)被自動(dòng)添加到用戶類路徑中。
-deprecation
顯示每種不鼓勵(lì)使用的成員或類的使用或覆蓋的說明。沒有給出 -deprecation 選項(xiàng)的話, javac 將顯示這類源文件的名稱:這些源文件使用或覆蓋不鼓勵(lì)使用的成員或類。
-encoding
設(shè)置源文件編碼名稱,例如 EUCJIS/SJIS。若未指定 -encoding 選項(xiàng),則使用平臺(tái)缺省的轉(zhuǎn)換器。
-g
生成所有的調(diào)試信息,包括局部變量。缺省情況下,只生成行號(hào)和源文件信息。
-g:none
不生成任何調(diào)試信息。
-g:{關(guān)鍵字列表}
只生成某些類型的調(diào)試信息,這些類型由逗號(hào)分隔的關(guān)鍵字列表所指定。有效的關(guān)鍵字有:
source
源文件調(diào)試信息
lines
行號(hào)調(diào)試信息
vars
局部變量調(diào)試信息
-nowarn
禁用警告信息。
-O
優(yōu)化代碼以縮短執(zhí)行時(shí)間。使用 -O 選項(xiàng)可能使編譯速度下降、生成更大的類文件并使程序難以調(diào)試。
在 JDK 1.2 以前的版本中,javac 的 -g 選項(xiàng)和 -O 選項(xiàng)不能一起使用。在 JDK 1.2 中,可以將 -g 和 -O 選項(xiàng)結(jié)合起來,但可能會(huì)得到意想不到的結(jié)果,如丟失變量或重新定位代碼或丟失代碼。-O 選項(xiàng)不再自動(dòng)打開 -depend 或關(guān)閉 -g 選項(xiàng)。同樣, -O 選項(xiàng)也不再允許進(jìn)行跨類內(nèi)嵌。
-sourcepath 源路徑
指定用以查找類或接口定義的源代碼路徑。與用戶類路徑一樣,源路徑項(xiàng)用分號(hào) (;) 進(jìn)行分隔,它們可以是目錄、JAR 歸檔文件或 ZIP 歸檔文件。如果使用包,那么目錄或歸檔文件中的本地路徑名必須反映包名。
注意:通過類路徑查找的類,如果找到了其源文件,則可能會(huì)自動(dòng)被重新編譯。
-verbose
冗長(zhǎng)輸出。它包括了每個(gè)所加載的類和每個(gè)所編譯的源文件的有關(guān)信息。
聯(lián)編選項(xiàng)
缺省情況下,類是根據(jù)與 javac 一起發(fā)行的 JDK 自舉類和擴(kuò)展類來編譯。但 javac 也支持聯(lián)編,在聯(lián)編中,類是根據(jù)其它 Java平臺(tái)實(shí)現(xiàn)的自舉類和擴(kuò)展類來進(jìn)行編譯的。聯(lián)編時(shí), -bootclasspath 和 -extdirs 的使用很重要;請(qǐng)參閱下面的聯(lián)編程序示例。
-target 版本
生成將在指定版本的虛擬機(jī)上運(yùn)行的類文件。缺省情況下生成與 1.1 和 1.2 版本的虛擬機(jī)都兼容的類文件。JDK 1.2 中的 javac 所支持的版本有:
1.1
保證所產(chǎn)生的類文件與 1.1 和 1.2 版的虛擬機(jī)兼容。這是缺省狀態(tài)。
1.2
生成的類文件可在 1.2 版的虛擬機(jī)上運(yùn)行,但不能在 1.1 版的虛擬機(jī)上運(yùn)行。
-bootclasspath 自舉類路徑
根據(jù)指定的自舉類集進(jìn)行聯(lián)編。和用戶類路徑一樣,自舉類路徑項(xiàng)用分號(hào) (;) 進(jìn)行分隔,它們可以是目錄、JAR 歸檔文件或 ZIP 歸檔文件。
-extdirs 目錄
根據(jù)指定的擴(kuò)展目錄進(jìn)行聯(lián)編。目錄是以分號(hào)分隔的目錄列表。在指定目錄的每個(gè) JAR 歸檔文件中查找類文件。
非標(biāo)準(zhǔn)選項(xiàng)
-X
顯示非標(biāo)準(zhǔn)選項(xiàng)的有關(guān)信息并退出。
-Xdepend
遞歸地搜索所有可獲得的類,以尋找要重編譯的最新源文件。該選項(xiàng)將更可靠地查找需要編譯的類,但會(huì)使編譯進(jìn)程的速度大為減慢。
-Xstdout
將編譯器信息送到System.out 中。缺省情況下,編譯器信息送到 System.err 中。
-Xverbosepath
說明如何搜索路徑和標(biāo)準(zhǔn)擴(kuò)展以查找源文件和類文件。
-J選項(xiàng)
將選項(xiàng)傳給 javac 調(diào)用的 java 啟動(dòng)器。例如, -J-Xms48m 將啟動(dòng)內(nèi)存設(shè)為 48 兆字節(jié)。雖然它不以 -X 開頭,但它并不是 javac 的‘標(biāo)準(zhǔn)選項(xiàng)’。用 -J 將選項(xiàng)傳給執(zhí)行用 Java 編寫的應(yīng)用程序的虛擬機(jī)是一種公共約定。
注意: CLASSPATH 、 -classpath 、 -bootclasspath 和 -extdirs 并 不 指定用于運(yùn)行 javac 的類。如此濫用編譯器的實(shí)現(xiàn)通常沒有任何意義而且總是很危險(xiǎn)的。如果確實(shí)需要這樣做,可用 -J 選項(xiàng)將選項(xiàng)傳給基本的 java 啟動(dòng)器。
程序示例
編譯簡(jiǎn)單程序
一個(gè)源文件 Hello.java ,它定義了一個(gè)名叫 greetings.Hello 的類。greetings 目錄是源文件和類文件兩者的包目錄,且它不是當(dāng)前目錄。這讓我們可以使用缺省的用戶類路徑。它也使我們沒必要用 -d 選項(xiàng)指定單獨(dú)的目標(biāo)目錄。
C: dir
greetings/
C: dir greetings
Hello.java
C: cat greetings\Hello.java
package greetings;
public class Hello {
public static void main(String[] args) {
for (int i=0; i args.length; i++) {
System.out.println("Hello " + args[i]);
}
}
}
C: javac greetings\Hello.java
C: dir greetings
Hello.class Hello.java
C: java greetings.Hello World Universe Everyone
Hello World
Hello Universe
Hello Everyone
編譯多個(gè)源文件
該示例編譯 greetings 包中的所有源文件。
C: dir
greetings\
C: dir greetings
Aloha.java GutenTag.java Hello.java Hi.java
C: javac greetings\*.java
C: dir greetings
Aloha.class GutenTag.class Hello.class Hi.class
Aloha.java GutenTag.java Hello.java Hi.java
指定用戶類路徑
對(duì)前面示例中的某個(gè)源文件進(jìn)行更改后,重新編譯它:
C: cd
\examples
C: javac greetings\Hi.java
由于 greetings.Hi 引用了 greetings 包中其它的類,編譯器需要找到這些其它的類。上面的示例能運(yùn)行是因?yàn)槿笔〉挠脩纛惵窂絼偤檬呛邪夸浀哪夸洝5牵僭O(shè)我們想重新編譯該文件并且不關(guān)心我們?cè)谀膫€(gè)目錄中的話, 我們需要將 \examples 添加到用戶類路徑中。可以通過設(shè)置 CLASSPATH 達(dá)到此目的,但這里我們將使用 -classpath 選項(xiàng)來完成。
C:javac -classpath \examples \examples\greetings\Hi.java
如果再次將 greetings.Hi 改為使用標(biāo)題實(shí)用程序,該實(shí)用程序也需要通過用戶類路徑來進(jìn)行訪問:
C:javac -classpath \examples:\lib\Banners.jar \
\examples\greetings\Hi.java
要執(zhí)行 greetings 中的類,需要訪問 greetings 和它所使用的類。
C:java -classpath \examples:\lib\Banners.jar greetings.Hi
將源文件和類文件分開
將源文件和類文件置于不同的目錄下經(jīng)常是很有意義的,特別是在大型的項(xiàng)目中。我們用 -d 選項(xiàng)來指明單獨(dú)的類文件目標(biāo)位置。由于源文件不在用戶類路徑中,所以用 -sourcepath 選項(xiàng)來協(xié)助編譯器查找它們。
C: dir
classes\ lib\ src\
C: dir src
farewells\
C: dir src\farewells
Base.java GoodBye.java
C: dir lib
Banners.jar
C: dir classes
C: javac -sourcepath src -classpath classes:lib\Banners.jar \
src\farewells\GoodBye.java -d classes
C: dir classes
farewells\
C: dir classes\farewells
Base.class GoodBye.class
注意:編譯器也編譯了 src\farewells\Base.java,雖然我們沒有在命令行中指定它。要跟蹤自動(dòng)編譯,可使用 -verbose 選項(xiàng)。
聯(lián)編程序示例
這里我們用 JDK 1.2 的 javac 來編譯將在 1.1 版的虛擬機(jī)上運(yùn)行的代碼。
C: javac -target 1.1 -bootclasspath jdk1.1.7\lib\classes.zip \
-extdirs "" OldCode.java
-target 1.1
JDK 1.2 javac 在缺省狀態(tài)下也將根據(jù) 1.2 版的自舉類來進(jìn)行編譯,因此我們需要告訴 javac 讓它根據(jù) JDK 1.1 自舉類來進(jìn)行編譯。可用 -bootclasspath 和 -extdirs 選項(xiàng)來達(dá)到此目的。不這樣做的話,可能會(huì)使編譯器根據(jù) 1.2 版的 API 來進(jìn)行編譯。由于 1.1 版的虛擬機(jī)上可能沒有該 1.2 版的 API,因此運(yùn)行時(shí)將出錯(cuò)。
選項(xiàng)可確保生成的類文件與 1.1 版的虛擬機(jī)兼容。在 JDK1.2 中, 缺省情況下 javac 編譯生成的文件是與 1.1 版的虛擬機(jī)兼容的,因此并非嚴(yán)格地需要該選項(xiàng)。然而,由于別的編譯器可能采用其它的缺省設(shè)置,所以提供這一選項(xiàng)將不失為是個(gè)好習(xí)慣。
加入你有個(gè)類:
public class Test {
public static void main(String[] args) {
System.out.println("Hello world");
}
}
那么你在這個(gè)類的所在目錄下在命令行輸入javac Test.java就把Test.java源代碼文件編譯成二進(jìn)制碼的命令,然后輸入java Test 則就會(huì)在命令行顯示Hello world了
你說的java源代碼是指編譯成的class文件前的java文件。
當(dāng)我們運(yùn)行.java文件時(shí),它會(huì)被系統(tǒng)編譯成.class文件,例如Test.java編譯之后就是Test.class,
源文件就是指Test.java文件,
一般部署項(xiàng)目時(shí),有.class文件就可以發(fā)布運(yùn)行了,但是如果想修改這個(gè)系統(tǒng),.class是不能修改的,要有.java文件才能修改
也可以上網(wǎng)去下反編譯軟件,就是能把.class文件大部分還原成.java文件的工具,但不是100%還原,而且如果不是正版的,小心有毒啊,什么的。
java源文件的格式是text/html類型的,可以直接用記事本打開。編碼可以是utf-8,也可以是其它類型的。后綴為.java
源文件編譯后的字節(jié)碼是以CAFE BABY開頭的二進(jìn)制文件。需要JVM才能讀懂。后綴為.class
一般來說,一個(gè)類對(duì)應(yīng)一個(gè)字節(jié)碼文件,內(nèi)部類編譯后也會(huì)生成一個(gè)單獨(dú)的字節(jié)碼文件。字節(jié)碼文件是以類名來命名(標(biāo)識(shí))的。
一些相關(guān)的字節(jié)碼文件可以按照包結(jié)構(gòu)打包成jar文件。jar文件和zip文件差不多。
java程序一般都會(huì)依賴很多的jar文件,比如最基本的rt.jar。
網(wǎng)站名稱:JAVA代碼文件euc Java類文件
標(biāo)題來源:http://chinadenli.net/article48/hehdep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、品牌網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站、服務(wù)器托管、網(wǎng)站策劃、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)