我試圖讀取特定包中的文本文件,但它返回無法找到。我可以讀取它插入絕對路徑,但我想讀取它而不插入絕對路徑。從特定的包中讀取txt文件Java
String texto = "Utils/CEP/Cidades/" + estado + ".txt";
FileReader fr = new FileReader(texto);
BufferedReader in = new BufferedReader(fr);
我該怎麼辦?
感謝
我試圖讀取特定包中的文本文件,但它返回無法找到。我可以讀取它插入絕對路徑,但我想讀取它而不插入絕對路徑。從特定的包中讀取txt文件Java
String texto = "Utils/CEP/Cidades/" + estado + ".txt";
FileReader fr = new FileReader(texto);
BufferedReader in = new BufferedReader(fr);
我該怎麼辦?
感謝
您可以使用
InputStream in =
getClass().getResourceAsStream("/Utils/CEP/Ciades/" + estado + ".txt");
Reader fr = new InputStreamReader(in, "utf-8");
幾個圖片的標題說明:不要在包名稱中使用大寫字母;使用你的變量的英文名稱。這些都是公認的做法和慣例。
如果文本文件與您的類文件存在於相同的結構中,那麼您可能更適合使用getResourceAsStream。
對於總的可移植性,可以考慮在地方使用文件分割符的正斜槓,但是,是的getResourceAsStream應該工作。請記住,如果你在eclipse中工作,你的類文件可能與你的工作目錄相關,所以如果它只是在你的項目文件夾中,你應該有它的工作方式,而不是getResourceAsStream。或者,如果您要訪問的資源位於源文件夾中,則每當您清理項目時都會將其複製到bin中,以便getResourceAsStream可以正常工作。
這可能有點晚,但這可能有助於其他許多人。這些方法訪問現有的資源,在項目
獲取資源形成默認的包從特定的軟件包
// Getting Resource as file object
File f = new File(getClass().getResource("/com/vivek/core/excludedir.properties").getFile());
// Getting resource as stream object
InputStream in = getClass().getResourceAsStream("/com/vivek/core/excludedir.properties");
注意
// Getting Resource as file object
File f = new File(getClass().getResource("/excludedir.properties").getFile());
// Getting resource as stream object
InputStream in = getClass().getResourceAsStream("/excludedir.properties");
獲取資源:的getclass( )是一個非靜態函數,不能從靜態上下文中調用。如果你想從靜態環境呼叫使用
YourClassName.class.getResource("/com/vivek/core/excludedir.properties").getFile()
希望這會有所幫助。乾杯!!
你是什麼意思,「在一個特定的包裝」?哪個包? – skaffman 2010-12-05 21:36:01
這看起來像是複製到以下問題: http://stackoverflow.com/questions/4359876/how-to-load-reference-a-file-as-a-file-instance-from-the-classpath – 2010-12-05 22:06:09