java文件定位
⑴ java中可以使用URL定位到本地的某個文件嗎
可以的,直接通過URL類實現即可。
舉例:URL fileUrl = new URL("file:///E:/tmp/test.txt");
備註:引入的是「java.net.URL「類。
⑵ Java中緩沖數組讀取文件怎樣定位每次讀取的位置
被讀取的文件可以放在硬碟的任意位置。 只要你新建文件IO流對象的時候把文件的物理路徑寫對就行了。代胡亂跡碼陪山例子如下:
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* file IO流讀取並輸出文件
* @author young
*
*/
public class FileIO {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("F:/workspace/one/src/filecode/FileIO.java");// 要讀的文件路徑
InputStreamReader isr = new InputStreamReader(fis);// 字元流
BufferedReader br = new BufferedReader(isr); // 緩沖
String line = null;
while ((line = br.readLine()) != null) {// 字元不等於褲並空
System.out.println(line);// 一行一行地輸出
}
br.close();// 關閉文件
}
}
⑶ java 文件在伺服器中定位絕對路徑
在jsp和class文件中調用的相對路徑不同。 在jsp里,根目錄是WebRoot 在class文件中,根目錄是WebRoot/WEB-INF/classes 當然你也可以用System.getProperty("user.dir")獲取你工程的絕對路徑。
另:在Jsp,Servlet,Java中詳細獲得路徑的方法!
1.jsp中取得路徑:
以工程名為TEST為例:
(1)得到包含工程名的當前頁面全路徑:request.getRequestURI()
結果:/TEST/test.jsp
(2)得到工程名:request.getContextPath()
結果:/TEST
(3)得到當前頁面所在目錄下全名稱:request.getServletPath()
結果:如果頁面在jsp目錄下 /TEST/jsp/test.jsp
(4)得到頁面所在伺服器的全路徑:application.getRealPath("頁面.jsp")
結果:D:\resin\webapps\TEST\test.jsp
(5)得到頁面所在伺服器的絕對路徑:absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();
結果:D:\resin\webapps\TEST
2.在類中取得路徑:
(1)類的絕對路徑:Class.class.getClass().getResource("/").getPath()
結果:/D:/TEST/WebRoot/WEB-INF/classes/pack/
(2)得到工程的路徑:System.getProperty("user.dir")
結果:D:\TEST
3.在Servlet中取得路徑:
(1)得到工程目錄:request.getSession().getServletContext().getRealPath("") 參數可具體到包名。
結果:E:\Tomcat\webapps\TEST
(2)得到IE地址欄地址:request.getRequestURL()
結果:http://localhost:8080/TEST/test
(3)得到相對地址:request.getRequestURI()
結果:/TEST/test
⑷ 關於java文件定位 RandomAccessFile錯誤
把
ObjectOutputStreamobject_out=newObjectOutputStream(ios);
改成
ObjectOutputStream歷哪object_out=newObjectOutputStream(new肢薯碼FileOutputStream("xm.txt"));
'ios.seek(xm.lengh)」應該這樣寫"xm.txt".length」手耐而不是xm.length
就OK了。
下面是運行結果:
⑸ java高手請進!
分類: 電子數碼 >> 其他數碼產品
問題描述:
我在eclipse中調試沒有任何問題,現在打成jar包後運行出現錯誤。原因就磨纖滑是我在程序中使用了一些圖片(在工程目錄下的gaiji目錄下),打成jar包後它好像是在包中找這些資源,我現在要作成這個樣子:就是和jar文件同一目錄下有一個目錄gaiji,執行這個jar調用gaiji目錄下的那些圖片,這個路徑該怎麼設置呢。我現在的路徑是用URL imgURL = getClass().getResource("/gaiji" + gaiji1.FILENAME);ImageIcon icon = new ImageIcon(imgURL);Image img = icon.getImage();
解析:
在java中,經常要定位某些文件的位置,豎伏為了能讓程序與物理位置無關,就要使用相對路徑。但java中使用相對路徑總會遇到一些很麻煩的問題,就是到底相對於哪個參照物的問題。因為我們平時使用相對路徑總是相對當前工作目錄而言的,但有時需求並非如此。比如,要在一個開發包中使用相對路徑,卻不知道開發包被其他程序調用時的所在路徑,而且特別瞎臘是在web應用中,很難確定某個文件在整個應用中的相對路徑。
所以使用相對路徑最好的辦法就是讓路徑相對的參照物是我的開發包或我的應用本身的東西,最好的就是用我開發包中的類的class文件。只要知道了某個class文件的絕對路徑,就可以以它為參照物,使用相對路徑來定位其他任何文件了。
為了實現這個想法,我寫了這個Path類,這個類提供了兩個靜態公共方法,一個用來定位類的class文件的位置,另一個以某個類為參照物來定位一個相對路徑。使用這兩個方法,我們可以完全不必理會應用的當前工作路徑,隨心所欲的根據自己的位置來尋找任何文件。比如在編寫某個功能性開發包時,就可以完全不用管調用這個開發包的應用的路徑情況,而僅僅根據開發包本身的位置來定位文件,這樣很好的實現了封裝性,將文件的路徑處理完全封閉在了開發包自身之內。
以下是Path類的源代碼:
* 創建日期 2004-11-22
*
* 更改所生成文件模板為
* 窗口 > 首選項 > Java > 代碼生成 > 代碼和注釋
*/
package mytools;
import java.io.File;
import java.io.IOException;
import java.MalformedURLException;
import java.URL;
import java.security.CodeSource;
import java.security.ProtectionDomain;
/**
* @author 由月
*
* 這個類提供了一些根據類的class文件位置來定位的方法。
*/
public class Path {
/**
* 獲取一個類的class文件所在的絕對路徑。 這個類可以是JDK自身的類,也可以是用戶自定義的類,或者是第三方開發包里的類。
* 只要是在本程序中可以被載入的類,都可以定位到它的class文件的絕對路徑。
*
* @param cls
* 一個對象的Class屬性
* @return 這個類的class文件位置的絕對路徑。 如果沒有這個類的定義,則返回null。
*/
public static String getPathFromClass(Class cls) throws IOException {
String path = null;
if (cls == null) {
throw new NullPointerException();
}
URL url = getClassLocationURL(cls);
if (url != null) {
path = url.getPath();
if ("jar".equalsIgnoreCase(url.getProtocol())) {
try {
path = new URL(path).getPath();
} catch (MalformedURLException e) {
}
int location = path.indexOf("!/");
if (location != -1) {
path = path.substring(0, location);
}
}
File file = new File(path);
path = file.getCanonicalPath();
}
return path;
}
/**
* 這個方法可以通過與某個類的class文件的相對路徑來獲取文件或目錄的絕對路徑。 通常在程序中很難定位某個相對路徑,特別是在B/S應用中。
* 通過這個方法,我們可以根據我們程序自身的類文件的位置來定位某個相對路徑。
* 比如:某個txt文件相對於程序的Test類文件的路徑是../../resource/test.txt,
* 那麼使用本方法Path.getFullPathRelateClass("../../resource/test.txt",Test.class)
* 得到的結果是txt文件的在系統中的絕對路徑。
*
* @param relatedPath
* 相對路徑
* @param cls
* 用來定位的類
* @return 相對路徑所對應的絕對路徑
* @throws IOException
* 因為本方法將查詢文件系統,所以可能拋出IO異常
*/
public static String getFullPathRelateClass(String relatedPath, Class cls)
throws IOException {
String path = null;
if (relatedPath == null) {
throw new NullPointerException();
}
String clsPath = getPathFromClass(cls);
File clsFile = new File(clsPath);
String tempPath = clsFile.getParent() + File.separator + relatedPath;
File file = new File(tempPath);
path = file.getCanonicalPath();
return path;
}
/**
* 獲取類的class文件位置的URL。這個方法是本類最基礎的方法,供其它方法調用。
*/
private static URL getClassLocationURL(final Class cls) {
if (cls == null)
throw new IllegalArgumentException("null input: cls");
URL result = null;
final String clsAsResource = cls.getName().replace('.', '/').concat(
".class");
final ProtectionDomain pd = cls.getProtectionDomain();
java.lang.Class contract does not specify
if 'pd' can ever be null;
it is not the case for Sun's implementations,
but guard against null
just in case:
if (pd != null) {
final CodeSource cs = pd.getCodeSource();
'cs' can be null depending on
the classloader behavior:
if (cs != null)
result = cs.getLocation();
if (result != null) {
Convert a code source location into
a full class file location
for some mon cases:
if ("file".equals(result.getProtocol())) {
try {
if (result.toExternalForm().endsWith(".jar")
|| result.toExternalForm().endsWith(".zip"))
result = new URL("jar:".concat(
result.toExternalForm()).concat("!/")
.concat(clsAsResource));
else if (new File(result.getFile()).isDirectory())
result = new URL(result, clsAsResource);
} catch (MalformedURLException ignore) {
}
}
}
}
if (result == null) {
Try to find 'cls' definition as a resource;
this is not
document.d to be legal, but Sun's
implementations seem to allow this:
final ClassLoader clsLoader = cls.getClassLoader();
result = clsLoader != null ? clsLoader.getResource(clsAsResource)
: ClassLoader.getSystemResource(clsAsResource);
}
return result;
}
public static void main(String[] args) {
try {
System.out.println(getPathFromClass(Path.class));
System.out.println(getFullPathRelateClass("../..", Path.class));
} catch (Exception e) {
e.printStackTrace();
}
}
}
程序運行結果:
C:\java\>java Path
C:\java\\Path.class
C:\
⑹ 如何定位某個java類在哪個jar文件
java查找類在哪個jar裡面封裝的方式如下:
如果用eclipse選中類名,然後ctrl shift T,就可跡孫看到豎擾包含比余州旦類的包了,如下圖:
⑺ cmd命令行中怎麼定位java源文件
再打一條:cd desktop
就切換到桌面文件夾下了。
⑻ Java讀取文件定位游標
用該類進行讀寫文件。。
RandomAccessFile
void seek(long pos)
設置到此文件開頭測量到的困辯散文件指針偏移量,在該位置發生下一個讀取或寫入操作。
可以設置 pos的值為 0 就行了。。
自己去查一下API文檔可以更好的理解。灶乎。
祝你汪氏好運。。。。