java中文件
Ⅰ java中對文件進行讀寫操作的基本類是什麼
Java.io包中包括許多類提供許多有關文件的各個方面操作。
1 輸入輸出抽象基類InputStream/OutputStream ,實現文件內容操作的基本功能函數read()、 write()、close()、skip()等;一般都是創建出其派生類對象(完成指定的特殊功能)來實現文件讀寫。在文件讀寫的編程過程中主要應該注意異常處理的技術。
2 FileInputStream/FileOutputStream:
用於本地文件讀寫(二進制格式讀寫並且是順序讀寫,讀和寫要分別創建出不同的文件流對象);
本地文件讀寫編程的基本過程為:
① 生成文件流對象(對文件讀操作時應該為FileInputStream類,而文件寫應該為FileOutputStream類);
② 調用FileInputStream或FileOutputStream類中的功能函數如read()、write(int b)等)讀寫文件內容;
③ 關閉文件(close())。
3 PipedInputStream/PipedOutputStream:
用於管道輸入輸出(將一個程序或一個線程的輸出結果直接連接到另一個程序或一個線程的輸入埠,實現兩者數據直接傳送。操作時需要連結);
4管道的連接:
方法之一是通過構造函數直接將某一個程序的輸出作為另一個程序的輸入,在定義對象時指明目標管道對象
PipedInputStream pInput=new PipedInputStream();
PipedOutputStream pOutput= new PipedOutputStream(pInput);
方法之二是利用雙方類中的任一個成員函數 connect()相連接
PipedInputStream pInput=new PipedInputStream();
PipedOutputStream pOutput= new PipedOutputStream();
pinput.connect(pOutput);
5 管道的輸入與輸出:
輸出管道對象調用write()成員函數輸出數據(即向管道的輸入端發送數據);而輸入管道對象調用read()成員函數可以讀起數據(即從輸出管道中獲得數據)。這主要是藉助系統所提供的緩沖機制來實現的。
6隨機文件讀寫:
RandomAccessFile類(它直接繼承於Object類而非InputStream/OutputStream類),從而可以實現讀寫文件中任何位置中的數據(只需要改變文件的讀寫位置的指針)。
隨機文件讀寫編程的基本過程為:
① 生成流對象並且指明讀寫類型;
② 移動讀寫位置;
③ 讀寫文件內容;
④ 關閉文件。
七里河團隊答疑助人,希望我的回答對你有所幫助
Ⅱ java中怎樣獲得一個文件夾中的所有文件名
java中獲得一個文件夾中的所有文件名代碼如下:
packagecom.readfile;
importjava.io.File;publicclassGetAllFiles {
publicstaticvoidmain(String[] args) {
//路徑 這里寫一個路徑進去
String path="F:\QQ文檔";
//調用方法
getFiles(path);
}
/**
* 遞歸獲取某路徑下的所有文件,文件夾,並輸出
*/
publicstaticvoidgetFiles(String path) {
File file =newFile(path);
// 如果這個路徑是文件夾
if(file.isDirectory()) {
// 獲取路徑下的所有文件
File[] files = file.listFiles();
for(inti =0; i < files.length; i++) {
// 如果還是文件夾 遞歸獲取裡面的文件 文件夾
if(files[i].isDirectory()) {
System.out.println("目錄:"+ files[i].getPath());
getFiles(files[i].getPath());
}else{
System.out.println("文件:"+ files[i].getPath());
}
}
}else{
System.out.println("文件:"+ file.getPath());
}
}
}
(2)java中文件擴展閱讀:
如果想要獲得當前文件中的文件名只需要String [] fileName = file.list();就可以了。
如果要包括文件中的文件名就可以用遞歸的方式。下面是兩個具體的實現。
其中public static String [] getFileName(String path)是只得到當前文件中的文件名。
public static void getAllFileName(String path,ArrayList<String> fileName)是包括當前文件及其子文件的文件名。
Ⅲ java項目中文件的路徑
java項目中文件的路徑-方法大全
一、 相對路徑的獲得
說明:相對路徑(即不寫明時候到底相對誰)均可通過以下方式獲得(不論是一般的java項目還是web項目)
System.getProperty("user.dir");
上述相對路徑中,java項目中的文件是相對於項目的根目錄web項目中的文件路徑視不同的web伺服器不同而不同(tomcat是相對於tomcat安裝目錄in)
二 類載入目錄的獲得(即當運行時某一類時獲得其裝載目錄)
1.1)通用的方法一(不論是一般的java項目還是web項目,先定位到能看到包路徑的第一級目錄)
InputStreamis=TestAction.class.getClassLoader().getResourceAsStream("test.txt");(test.txt文件的路徑為 項目名src est.txt;類TestPath所在包的第一級目錄位於src目錄下)
三 web項目根目錄的獲得(發布之後)
1 從servlet出發
可建立一個servlet在其的init方法中寫入如下語句(沒有請求的話會拋空指針導常)
ServletContext s1=this.getServletContext();
String temp=s1.getRealPath("/"); (關鍵)
結果形如:F: omcat-6.0.36webapps est(test為項目名字)
如果是調用了s1.getRealPath("")則輸出F: omcat-6.0.36webapps est(少了一個"")
2 從httpServletRequest出發(沒有請求的話會拋空指針導常)
String path=request.getSession().getServletContext().getRealPath("/");
結果形如:F: omcat-6.0.36webapps est
四 classpath的獲取(在Eclipse中為獲得src或者classes目錄的路徑),放在監聽器,可以窗口啟動獲取路徑
方法一Thread.currentThread().getContextClassLoader().getResource("").getPath()
String path = Thread.currentThread().getContextClassLoader()
.getResource("").getPath();
System.out.println("path========"+ path);輸出:path========/F:/tomcat-6.0.36/webapps/test/WEB-INF/classes/
方法二JdomParse.class.getClassLoader().getResource("").getPath()(JdomParse為src某一個包中的類,下同)
eg:String p1=JdomParse.class.getClassLoader().getResource("").getPath();
System.out.println("JdomParse.class.getClassLoader().getResource--"+p1);
輸出:JdomParse.class.getClassLoader().getResource-/F:/tomcat-6.0.36/webapps/test/WEB-INF/classes/
另外,如果想把文件放在某一包中,則可以 通過以下方式獲得到文件(先定位到該包的最後一級目錄)
eg String p2=JdomParse.class.getResource("").getPath();
System.out.println("JdomParse.class.getResource---"+p2);
輸出:JdomParse.class.getResource--/F:/tomcat-6.0.36/webapps/test/WEB-INF/classes/
(JdomParse為src目錄下jdom包中的類)
四 屬性文件的讀取:
方法 一
InputStream in = lnewBufferedInputStream(newFileInputStream(name));
Properties p =newProperties();p.load(in);
注意路徑的問題,做執行之後就可以調用p.getProperty("name")得到對應屬性的值
方法二
Locale locale =Locale.getDefault();
ResourceBundle localResource = ResourceBundle.getBundle("test/propertiesTest",locale);
String value = localResource.getString("test");
System.out.println("ResourceBundle: " + value);
工程src目錄下propertiesTest.properties(名字後綴必須為properties)文件內容如下:
test=hello word
不通過Servlet獲取路徑
第一種實現
Java代碼
URL url = ClassLoader.getSystemClassLoader().getResource("./");
File file =newFile(url.getPath());
File parentFile =newFile(file.getParent());
System.out.println("webRoot:"+parentFile.getParent());
第二種實現
首先寫一個接聽類 (推薦使用,容器啟動時就執行,不會拋空指針異常,適合做定時器任務來刪除伺服器文件的路徑)
Java代碼:
package com.chinacreator.report.listener;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
* @authorxiaoqun.yi
*/
public class PathListener {
private staticServletContext servletContext;
public voidcontextDestroyed(ServletContextEvent sce) {
this.servletContext= sce.getServletContext();
System.out.println("path=======:"+servletContext.getRealPath("/"));
}
public voidcontextInitialized(ServletContextEvent arg0) {
}
}
在web.xml中加入如下配置
Java代碼 :
<listener>
<listener-class>com.chinacreator.report.listener.PathListener</listener-class>
</listener>
五、Java中的getResourceAsStream有以下幾種:
1. Class.getResourceAsStream(String path) : path 不以』/'開頭時默認是從此類所在的包下取資源,以』/'開頭則是從ClassPath根下獲取。其只是通過path構造一個絕對路徑,最終還是由 ClassLoader(類載入器)(獲取資源)
2. Class.getClassLoader.getResourceAsStream(String path) :默認則是從ClassPath根下獲取,path不能以』/'開頭,最終是由ClassLoader獲取資源。
3. ServletContext. getResourceAsStream(String path):默認從WebAPP根目錄下取資源,Tomcat下path是否以』/'開頭無所謂,當然這和具體的容器實現有關。
4. Jsp下的application內置對象就是上面的ServletContext的一種實現。
其次,getResourceAsStream 用法大致有以下幾種:
第一: 要載入的文件和.class文件在同一目錄下,例如:com.x.y 下有類me.class ,同時有資源文件myfile.xml
那麼,應該有如下代碼:
me.class.getResourceAsStream("myfile.xml");
第二:在me.class目錄的子目錄下,例如:com.x.y 下有類me.class ,同時在 com.x.y.file 目錄下有資源文件myfile.xml
那麼,應該有如下代碼:
me.class.getResourceAsStream("file/myfile.xml");
第三:不在me.class目錄下,也不在子目錄下,例如:com.x.y 下有類me.class ,同時在 com.x.file 目錄下有資源文件myfile.xml
那麼,應該有如下代碼:
me.class.getResourceAsStream("/com/x/file/myfile.xml");
總結一下,可能只是兩種寫法
第一:前面有 「 / 」
「 / 」代表了工程的根目錄,例如工程名叫做myproject,「 / 」代表了myproject
me.class.getResourceAsStream("/com/x/file/myfile.xml");
第二:前面沒有 「 / 」
代表當前類的目錄
me.class.getResourceAsStream("myfile.xml");
me.class.getResourceAsStream("file/myfile.xml");
Ⅳ JAVA中.class文件是什麼意思有什麼用嗎
JAVA中.class文件是什麼意思,有什麼用嗎,解決辦法:
JAVA中*.java這樣的文件是用java語言編寫的源文件。
經過編譯會變成相應的 *.class 文件 *.class 文件。
有一處編譯到處運行的特點(即windows生成的class 可以在 linux系統中運行)。
注:這個*.class 不是類似於 *.exe這樣的可執行文件只能被java虛擬機執行。
Ⅳ java中創建文件
public void createFile(){
//path表示你所創建文件的路徑
String path = "d:/tr/rt";
File f = new File(path);
if(!f.exists()){
f.mkdirs();
}
// fileName表示你創建的文件名;為txt類型;
String fileName="test.txt";
File file = new File(f,fileName);
if(!file.exists()){
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//現在你可以在d:/tr/rt 目錄下找到test.txt文件
Ⅵ JAVA 中對文件的操作
File
f
=
new
File("D:\\opt\\bety\\nt\\tem\\JTB\\bety.dat");
f.createNewFile();
但是這個路徑的文件夾
必須得存在··
Ⅶ java中的bin文件和jre文件分別是做什麼的
首先給要清楚JDK和JRE的區別
JDK(Java Development Kit) 是 Java 語言的軟體開發工具包
JRE( Java Runtime Environment),即Java運行時環境
安裝完整JDK,就自動會安裝jre,jre在JDK目錄下,其實你可以理解是倆個東西,只是jre也放在JDK目錄下面和jdk的bin目錄平級別
JDK是開發環境,jre是運行環境,JDK 目錄下的bin目錄就是開發環境必要組件和工具
JRE運行環境,jre 目錄下bin文件夾就是java運行的必要組件
Ⅷ Java中什麼是字元文件,什麼是位元組文件
字元文件本質上也是位元組文件,最終都是以位元組形式存儲在文件中。
字元文件中的位元組,可以被文本編輯軟體被轉化為字元。
位元組文件,也文本編輯軟體打開,只不過展示的是一片亂碼。
Ⅸ Java中文件操作
FileWriter fr=new FileWriter(file);
改為:
FileWriter fr=new FileWriter(file,true);
即可
以下內容是API,你可以自己查:
FileWriter
public FileWriter(File file,
boolean append)
throws IOException根據給定的 File 對象構造一個 FileWriter 對象。如果第二個參數為 true,則將位元組寫入文件末尾處,而不是寫入文件開始處。
Ⅹ JAVA中讀取文件(二進制,字元)內容的幾種方
JAVA中讀取文件內容的方法有很多,比如按位元組讀取文件內容,按字元讀取文件內容,按行讀取文件內容,隨機讀取文件內容等方法,本文就以上方法的具體實現給出代碼,需要的可以直接復制使用
public class ReadFromFile {
/**
* 以位元組為單位讀取文件,常用於讀二進制文件,如圖片、聲音、影像等文件。
*/
public static void readFileByBytes(String fileName) {
File file = new File(fileName);
InputStream in = null;
try {
System.out.println("以位元組為單位讀取文件內容,一次讀一個位元組:");
// 一次讀一個位元組
in = new FileInputStream(file);
int tempbyte;
while ((tempbyte = in.read()) != -1) {
System.out.write(tempbyte);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
return;
}
try {
System.out.println("以位元組為單位讀取文件內容,一次讀多個位元組:");
// 一次讀多個位元組
byte[] tempbytes = new byte[100];
int byteread = 0;
in = new FileInputStream(fileName);
ReadFromFile.showAvailableBytes(in);
// 讀入多個位元組到位元組數組中,byteread為一次讀入的位元組數
while ((byteread = in.read(tempbytes)) != -1) {
System.out.write(tempbytes, 0, byteread);
}
} catch (Exception e1) {
e1.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e1) {
}
}
}
}
/**
* 以字元為單位讀取文件,常用於讀文本,數字等類型的文件
*/
public static void readFileByChars(String fileName) {
File file = new File(fileName);
Reader reader = null;
try {
System.out.println("以字元為單位讀取文件內容,一次讀一個位元組:");
// 一次讀一個字元
reader = new InputStreamReader(new FileInputStream(file));
int tempchar;
while ((tempchar = reader.read()) != -1) {
// 對於windows下,\r\n這兩個字元在一起時,表示一個換行。
// 但如果這兩個字元分開顯示時,會換兩次行。
// 因此,屏蔽掉\r,或者屏蔽\n。否則,將會多出很多空行。
if (((char) tempchar) != '\r') {
System.out.print((char) tempchar);
}
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println("以字元為單位讀取文件內容,一次讀多個位元組:");
// 一次讀多個字元
char[] tempchars = new char[30];
int charread = 0;
reader = new InputStreamReader(new FileInputStream(fileName));
// 讀入多個字元到字元數組中,charread為一次讀取字元數
while ((charread = reader.read(tempchars)) != -1) {
// 同樣屏蔽掉\r不顯示
if ((charread == tempchars.length)
&& (tempchars[tempchars.length - 1] != '\r')) {
System.out.print(tempchars);
} else {
for (int i = 0; i < charread; i++) {
if (tempchars[i] == '\r') {
continue;
} else {
System.out.print(tempchars[i]);
}
}
}
}
} catch (Exception e1) {
e1.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
}
/**
* 以行為單位讀取文件,常用於讀面向行的格式化文件
*/
public static void readFileByLines(String fileName) {
File file = new File(fileName);
BufferedReader reader = null;
try {
System.out.println("以行為單位讀取文件內容,一次讀一整行:");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
// 一次讀入一行,直到讀入null為文件結束
while ((tempString = reader.readLine()) != null) {
// 顯示行號
System.out.println("line " + line + ": " + tempString);
line++;
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
}
/**
* 隨機讀取文件內容
*/
public static void readFileByRandomAccess(String fileName) {
RandomAccessFile randomFile = null;
try {
System.out.println("隨機讀取一段文件內容:");
// 打開一個隨機訪問文件流,按只讀方式
randomFile = new RandomAccessFile(fileName, "r");
// 文件長度,位元組數
long fileLength = randomFile.length();
// 讀文件的起始位置
int beginIndex = (fileLength > 4) ? 4 : 0;
// 將讀文件的開始位置移到beginIndex位置。
randomFile.seek(beginIndex);
byte[] bytes = new byte[10];
int byteread = 0;
// 一次讀10個位元組,如果文件內容不足10個位元組,則讀剩下的位元組。
// 將一次讀取的位元組數賦給byteread
while ((byteread = randomFile.read(bytes)) != -1) {
System.out.write(bytes, 0, byteread);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (randomFile != null) {
try {
randomFile.close();
} catch (IOException e1) {
}
}
}
}
/**
* 顯示輸入流中還剩的位元組數
*/
private static void showAvailableBytes(InputStream in) {
try {
System.out.println("當前位元組輸入流中的位元組數為:" + in.available());
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String fileName = "C:/temp/newTemp.txt";
ReadFromFile.readFileByBytes(fileName);
ReadFromFile.readFileByChars(fileName);
ReadFromFile.readFileByLines(fileName);
ReadFromFile.readFileByRandomAccess(fileName);
}
}