真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java如何獲得當(dāng)前文件路徑

這篇文章主要介紹“Java如何獲得當(dāng)前文件路徑”,在日常操作中,相信很多人在Java如何獲得當(dāng)前文件路徑問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java如何獲得當(dāng)前文件路徑”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

創(chuàng)新互聯(lián)公司專注于朝陽企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),電子商務(wù)商城網(wǎng)站建設(shè)。朝陽網(wǎng)站建設(shè)公司,為朝陽等地區(qū)提供建站服務(wù)。全流程按需定制網(wǎng)站,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

1.如何獲得當(dāng)前文件路徑

常用:

字符串類型:System.getProperty("user.dir");

綜合:

package com.zcjl.test.base;
import java.io.File;
public class Test {
   public static void main(String[] args) throws Exception {
       System.out.println(            Thread.currentThread().getContextClassLoader().getResource(""));
       System.out.println(Test.class.getClassLoader().getResource(""));
       System.out.println(ClassLoader.getSystemResource(""));
       System.out.println(Test.class.getResource(""));
       System.out.println(Test.class.getResource("/"));
       System.out.println(new File("").getAbsolutePath());
       System.out.println(System.getProperty("user.dir"));
   }
}

[@more@]

2.Web服務(wù)中

(1).Weblogic

WebApplication的系統(tǒng)文件根目錄是你的weblogic安裝所在根目錄。
例如:如果你的weblogic安裝在c:beaweblogic700.....
那么,你的文件根路徑就是c:.
所以,有兩種方式能夠讓你訪問你的服務(wù)器端的文件:
a.使用絕對路徑:
比如將你的參數(shù)文件放在c:yourconfigyourconf.properties,
直接使用 new FileInputStream("yourconfig/yourconf.properties");
b.使用相對路徑:
相對路徑的根目錄就是你的webapplication的根路徑,即WEB-INF的上一級目錄,將你的參數(shù)文件放在yourwebappyourconfigyourconf.properties,
這樣使用:
new FileInputStream("./yourconfig/yourconf.properties");
這兩種方式均可,自己選擇。

(2).Tomcat

在類中輸出System.getProperty("user.dir");顯示的是%Tomcat_Home%/bin

(3).Resin

不是你的JSP放的相對路徑,是JSP引擎執(zhí)行這個JSP編譯成SERVLET
的路徑為根.比如用新建文件法測試File f = new File("a.htm");
這個a.htm在resin的安裝目錄下

(4).如何讀相對路徑哪?

在Java文件中g(shù)etResource或getResourceAsStream均可

例:getClass().getResourceAsStream(filePath);//filePath可以是"/filename",這里的/代表web發(fā)布根路徑下WEB-INF/classes

(5).獲得文件真實路徑

string  file_real_path=request.getRealPath("mypath/filename");  

通常使用request.getRealPath("/");  

3.文件操作的類

import java.io.*;
import java.net.*;
import java.util.*;
//import javax.swing.filechooser.*;
//import org.jr.swing.filter.*;

/**
* 此類中封裝一些常用的文件操作。
* 所有方法都是靜態(tài)方法,不需要生成此類的實例,
* 為避免生成此類的實例,構(gòu)造方法被申明為private類型的。
* @since  0.1
*/

public class FileUtil {
 /**
  * 私有構(gòu)造方法,防止類的實例化,因為工具類不需要實例化。
  */
 private FileUtil() {

 }

 /**
  * 修改文件的最后訪問時間。
  * 如果文件不存在則創(chuàng)建該文件。
  * 目前這個方法的行為方式還不穩(wěn)定,主要是方法有些信息輸出,這些信息輸出是否保留還在考

慮中。
  * @param file 需要修改最后訪問時間的文件。
  * @since  0.1
  */
 public static void touch(File file) {
   long currentTime = System.currentTimeMillis();
   if (!file.exists()) {
     System.err.println("file not found:" + file.getName());
     System.err.println("Create a new file:" + file.getName());
     try {
       if (file.createNewFile()) {
       //  System.out.println("Succeeded!");
       }
       else {
       //  System.err.println("Create file failed!");
       }
     }
     catch (IOException e) {
     //  System.err.println("Create file failed!");
       e.printStackTrace();
     }
   }
   boolean result = file.setLastModified(currentTime);
   if (!result) {
   //  System.err.println("touch failed: " + file.getName());
   }
 }

 /**
  * 修改文件的最后訪問時間。
  * 如果文件不存在則創(chuàng)建該文件。
  * 目前這個方法的行為方式還不穩(wěn)定,主要是方法有些信息輸出,這些信息輸出是否保留還在考

慮中。
  * @param fileName 需要修改最后訪問時間的文件的文件名。
  * @since  0.1
  */
 public static void touch(String fileName) {
   File file = new File(fileName);
   touch(file);
 }

 /**
  * 修改文件的最后訪問時間。
  * 如果文件不存在則創(chuàng)建該文件。
  * 目前這個方法的行為方式還不穩(wěn)定,主要是方法有些信息輸出,這些信息輸出是否保留還在考

慮中。
  * @param files 需要修改最后訪問時間的文件數(shù)組。
  * @since  0.1
  */
 public static void touch(File[] files) {
   for (int i = 0; i < files.length; i++) {
     touch(files);
   }
 }

 /**
  * 修改文件的最后訪問時間。
  * 如果文件不存在則創(chuàng)建該文件。
  * 目前這個方法的行為方式還不穩(wěn)定,主要是方法有些信息輸出,這些信息輸出是否保留還在考

慮中。
  * @param fileNames 需要修改最后訪問時間的文件名數(shù)組。
  * @since  0.1
  */
 public static void touch(String[] fileNames) {
   File[] files = new File[fileNames.length];
   for (int i = 0; i < fileNames.length; i++) {
     files = new File(fileNames);
   }
   touch(files);
 }

 /**
  * 判斷指定的文件是否存在。
  * @param fileName 要判斷的文件的文件名
  * @return 存在時返回true,否則返回false。
  * @since  0.1
  */
 public static boolean isFileExist(String fileName) {
   return new File(fileName).isFile();
 }

 /**
  * 創(chuàng)建指定的目錄。
  * 如果指定的目錄的父目錄不存在則創(chuàng)建其目錄書上所有需要的父目錄。
  * 注意:可能會在返回false的時候創(chuàng)建部分父目錄。
  * @param file 要創(chuàng)建的目錄
  * @return 完全創(chuàng)建成功時返回true,否則返回false。
  * @since  0.1
  */
 public static boolean makeDirectory(File file) {
   File parent = file.getParentFile();
   if (parent != null) {
     return parent.mkdirs();
   }
   return false;
 }

 /**
  * 創(chuàng)建指定的目錄。
  * 如果指定的目錄的父目錄不存在則創(chuàng)建其目錄書上所有需要的父目錄。
  * 注意:可能會在返回false的時候創(chuàng)建部分父目錄。
  * @param fileName 要創(chuàng)建的目錄的目錄名
  * @return 完全創(chuàng)建成功時返回true,否則返回false。
  * @since  0.1
  */
 public static boolean makeDirectory(String fileName) {
   File file = new File(fileName);
   return makeDirectory(file);
 }

 /**
  * 清空指定目錄中的文件。
  * 這個方法將盡可能刪除所有的文件,但是只要有一個文件沒有被刪除都會返回false。
  * 另外這個方法不會迭代刪除,即不會刪除子目錄及其內(nèi)容。
  * @param directory 要清空的目錄
  * @return 目錄下的所有文件都被成功刪除時返回true,否則返回false.
  * @since  0.1
  */
 public static boolean emptyDirectory(File directory) {
   boolean result = false;
   File[] entries = directory.listFiles();
   for (int i = 0; i < entries.length; i++) {
     if (!entries.delete()) {
       result = false;
     }
   }
   return true;
 }

 /**
  * 清空指定目錄中的文件。
  * 這個方法將盡可能刪除所有的文件,但是只要有一個文件沒有被刪除都會返回false。
  * 另外這個方法不會迭代刪除,即不會刪除子目錄及其內(nèi)容。
  * @param directoryName 要清空的目錄的目錄名
  * @return 目錄下的所有文件都被成功刪除時返回true,否則返回false。
  * @since  0.1
  */
 public static boolean emptyDirectory(String directoryName) {
   File dir = new File(directoryName);
   return emptyDirectory(dir);
 }

 /**
  * 刪除指定目錄及其中的所有內(nèi)容。
  * @param dirName 要刪除的目錄的目錄名
  * @return 刪除成功時返回true,否則返回false。
  * @since  0.1
  */
 public static boolean deleteDirectory(String dirName) {
   return deleteDirectory(new File(dirName));
 }

 /**
  * 刪除指定目錄及其中的所有內(nèi)容。
  * @param dir 要刪除的目錄
  * @return 刪除成功時返回true,否則返回false。
  * @since  0.1
  */
 public static boolean deleteDirectory(File dir) {
   if ( (dir == null) || !dir.isDirectory()) {
     throw new IllegalArgumentException("Argument " + dir +
                                        " is not a directory. ");
   }

   File[] entries = dir.listFiles();
   int sz = entries.length;

   for (int i = 0; i < sz; i++) {
     if (entries.isDirectory()) {
       if (!deleteDirectory(entries)) {
         return false;
       }
     }
     else {
       if (!entries.delete()) {
         return false;
       }
     }
   }

   if (!dir.delete()) {
     return false;
   }
   return true;
 }


 /**
  * 返回文件的URL地址。
  * @param file 文件
  * @return 文件對應(yīng)的的URL地址
  * @throws MalformedURLException
  * @since  0.4
  * @deprecated 在實現(xiàn)的時候沒有注意到File類本身帶一個toURL方法將文件路徑轉(zhuǎn)換為URL。
  *             請使用File.toURL方法。
  */
 public static URL getURL(File file) throws MalformedURLException {
   String fileURL = "file:/" + file.getAbsolutePath();
   URL url = new URL(fileURL);
   return url;
 }

 /**
  * 從文件路徑得到文件名。
  * @param filePath 文件的路徑,可以是相對路徑也可以是絕對路徑
  * @return 對應(yīng)的文件名
  * @since  0.4
  */
 public static String getFileName(String filePath) {
   File file = new File(filePath);
   return file.getName();
 }

 /**
  * 從文件名得到文件絕對路徑。
  * @param fileName 文件名
  * @return 對應(yīng)的文件路徑
  * @since  0.4
  */
 public static String getFilePath(String fileName) {
   File file = new File(fileName);
   return file.getAbsolutePath();
 }

 /**
  * 將DOS/Windows格式的路徑轉(zhuǎn)換為UNIX/Linux格式的路徑。
  * 其實就是將路徑中的""全部換為"/",因為在某些情況下我們轉(zhuǎn)換為這種方式比較方便,
  * 某中程度上說"/"比""更適合作為路徑分隔符,而且DOS/Windows也將它當(dāng)作路徑分隔符。
  * @param filePath 轉(zhuǎn)換前的路徑
  * @return 轉(zhuǎn)換后的路徑
  * @since  0.4
  */
 public static String toUNIXpath(String filePath) {
   return filePath.replace('', '/');
 }

 /**
  * 從文件名得到UNIX風(fēng)格的文件絕對路徑。
  * @param fileName 文件名
  * @return 對應(yīng)的UNIX風(fēng)格的文件路徑
  * @since  0.4
  * @see #toUNIXpath(String filePath) toUNIXpath
  */
 public static String getUNIXfilePath(String fileName) {
   File file = new File(fileName);
   return toUNIXpath(file.getAbsolutePath());
 }

 /**
  * 得到文件的類型。
  * 實際上就是得到文件名中最后一個“.”后面的部分。
  * @param fileName 文件名
  * @return 文件名中的類型部分
  * @since  0.5
  */
 public static String getTypePart(String fileName) {
   int point = fileName.lastIndexOf('.');
   int length = fileName.length();
   if (point == -1 || point == length - 1) {
     return "";
   }
   else {
     return fileName.substring(point + 1, length);
   }
 }

 /**
  * 得到文件的類型。
  * 實際上就是得到文件名中最后一個“.”后面的部分。
  * @param file 文件
  * @return 文件名中的類型部分
  * @since  0.5
  */
 public static String getFileType(File file) {
   return getTypePart(file.getName());
 }

 /**
  * 得到文件的名字部分。
  * 實際上就是路徑中的最后一個路徑分隔符后的部分。
  * @param fileName 文件名
  * @return 文件名中的名字部分
  * @since  0.5
  */
 public static String getNamePart(String fileName) {
   int point = getPathLsatIndex(fileName);
   int length = fileName.length();
   if (point == -1) {
     return fileName;
   }
   else if (point == length - 1) {
     int secondPoint = getPathLsatIndex(fileName, point - 1);
     if (secondPoint == -1) {
       if (length == 1) {
         return fileName;
       }
       else {
         return fileName.substring(0, point);
       }
     }
     else {
       return fileName.substring(secondPoint + 1, point);
     }
   }
   else {
     return fileName.substring(point + 1);
   }
 }

 /**
  * 得到文件名中的父路徑部分。
  * 對兩種路徑分隔符都有效。
  * 不存在時返回""。
  * 如果文件名是以路徑分隔符結(jié)尾的則不考慮該分隔符,例如"/path/"返回""。
  * @param fileName 文件名
  * @return 父路徑,不存在或者已經(jīng)是父目錄時返回""
  * @since  0.5
  */
 public static String getPathPart(String fileName) {
   int point = getPathLsatIndex(fileName);
   int length = fileName.length();
   if (point == -1) {
     return "";
   }
   else if (point == length - 1) {
     int secondPoint = getPathLsatIndex(fileName, point - 1);
     if (secondPoint == -1) {
       return "";
     }
     else {
       return fileName.substring(0, secondPoint);
     }
   }
   else {
     return fileName.substring(0, point);
   }
 }

 /**
  * 得到路徑分隔符在文件路徑中首次出現(xiàn)的位置。
  * 對于DOS或者UNIX風(fēng)格的分隔符都可以。
  * @param fileName 文件路徑
  * @return 路徑分隔符在路徑中首次出現(xiàn)的位置,沒有出現(xiàn)時返回-1。
  * @since  0.5
  */
 public static int getPathIndex(String fileName) {
   int point = fileName.indexOf('/');
   if (point == -1) {
     point = fileName.indexOf('');
   }
   return point;
 }

 /**
  * 得到路徑分隔符在文件路徑中指定位置后首次出現(xiàn)的位置。
  * 對于DOS或者UNIX風(fēng)格的分隔符都可以。
  * @param fileName 文件路徑
  * @param fromIndex 開始查找的位置
  * @return 路徑分隔符在路徑中指定位置后首次出現(xiàn)的位置,沒有出現(xiàn)時返回-1。
  * @since  0.5
  */
 public static int getPathIndex(String fileName, int fromIndex) {
   int point = fileName.indexOf('/', fromIndex);
   if (point == -1) {
     point = fileName.indexOf('', fromIndex);
   }
   return point;
 }

 /**
  * 得到路徑分隔符在文件路徑中最后出現(xiàn)的位置。
  * 對于DOS或者UNIX風(fēng)格的分隔符都可以。
  * @param fileName 文件路徑
  * @return 路徑分隔符在路徑中最后出現(xiàn)的位置,沒有出現(xiàn)時返回-1。
  * @since  0.5
  */
 public static int getPathLsatIndex(String fileName) {
   int point = fileName.lastIndexOf('/');
   if (point == -1) {
     point = fileName.lastIndexOf('');
   }
   return point;
 }

 /**
  * 得到路徑分隔符在文件路徑中指定位置前最后出現(xiàn)的位置。
  * 對于DOS或者UNIX風(fēng)格的分隔符都可以。
  * @param fileName 文件路徑
  * @param fromIndex 開始查找的位置
  * @return 路徑分隔符在路徑中指定位置前最后出現(xiàn)的位置,沒有出現(xiàn)時返回-1。
  * @since  0.5
  */
 public static int getPathLsatIndex(String fileName, int fromIndex) {
   int point = fileName.lastIndexOf('/', fromIndex);
   if (point == -1) {
     point = fileName.lastIndexOf('', fromIndex);
   }
   return point;
 }

 /**
  * 將文件名中的類型部分去掉。
  * @param filename 文件名
  * @return 去掉類型部分的結(jié)果
  * @since  0.5
  */
 public static String trimType(String filename) {
   int index = filename.lastIndexOf(".");
   if (index != -1) {
     return filename.substring(0, index);
   }
   else {
     return filename;
   }
 }
 /**
  * 得到相對路徑。
  * 文件名不是目錄名的子節(jié)點時返回文件名。
  * @param pathName 目錄名
  * @param fileName 文件名
  * @return 得到文件名相對于目錄名的相對路徑,目錄下不存在該文件時返回文件名
  * @since  0.5
  */
 public static String getSubpath(String pathName,String fileName) {
   int index = fileName.indexOf(pathName);
   if (index != -1) {
     return fileName.substring(index + pathName.length() + 1);
   }
   else {
     return fileName;
   }
 }

}
4.遺留問題

目前new FileInputStream()只會使用絕對路徑,相對沒用過,因為要相對于web服務(wù)器地址,比較麻煩

還不如寫個配置文件來的快哪

5.按Java文件類型分類讀取配置文件

配置文件是應(yīng)用系統(tǒng)中不可缺少的,可以增加程序的靈活性。java.util.Properties是從jdk1.2就有的類,一直到現(xiàn)在都支持load ()方法,jdk1.4以后save(output,string) ->store(output,string)。如果只是單純的讀,根本不存在煩惱的問題。web層可以通過 Thread.currentThread().getContextClassLoader().
getResourceAsStream("xx.properties") 獲取;Application可以通過new FileInputStream("xx.properties");直接在classes一級獲取。關(guān)鍵是有時我們需要通過web修改配置文件,我們不能將路徑寫死了。經(jīng)過測試覺得有以下心得:

1.servlet中讀寫。如果運(yùn)用Struts 或者Servlet可以直接在初始化參數(shù)中配置,調(diào)用時根據(jù)servlet的getRealPath("/")獲取真實路徑,再根據(jù)String file = this.servlet.getInitParameter("abc");獲取相對的WEB-INF的相對路徑。
例:
InputStream input = Thread.currentThread().getContextClassLoader().
getResourceAsStream("abc.properties");
Properties prop = new Properties();
prop.load(input);
input.close();
OutputStream out = new FileOutputStream(path);
prop.setProperty("abc", “test");
prop.store(out, “–test–");
out.close();

2.直接在jsp中操作,通過jsp內(nèi)置對象獲取可操作的絕對地址。
例:
// jsp頁面
String path = pageContext.getServletContext().getRealPath("/");
String realPath = path+"/WEB-INF/classes/abc.properties";

//java 程序
InputStream in = getClass().getClassLoader().getResourceAsStream("abc.properties"); // abc.properties放在webroot/WEB-INF/classes/目錄下
prop.load(in);
in.close();

OutputStream out = new FileOutputStream(path); // path為通過頁面?zhèn)魅氲穆窂?br/>prop.setProperty("abc", “abcccccc");
prop.store(out, “–test–");
out.close();

3.只通過Java程序操作資源文件
InputStream in = new FileInputStream("abc.properties"); // 放在classes同級

OutputStream out = new FileOutputStream("abc.properties");

到此,關(guān)于“Java如何獲得當(dāng)前文件路徑”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
網(wǎng)頁題目:Java如何獲得當(dāng)前文件路徑
文章源于:http://weahome.cn/article/gsepgh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部