2012-10-20 48 views
1

文件繼續我以前的帖子,upload file with relative path我嘗試使用閱讀從Android設備

url = '/mnt/sdcard/download/XYZ.txt'; 
File dir = Environment.getExternalStorageDirectory(); 
File f_path = new File(dir, url); 
InputStream fis = null; 
fis = new BufferedInputStream(new FileInputStream(f_path)); 

運行但是當我運行這個從我的Android設備被扔我的錯誤。

java.io.FileNotFoundException: /mnt/sdcard/mnt/sdcard/download/XYZ.txt (No such file or directory) 

f_path的輸出是 '/mnt/sdcard/download/XYZ.txt'

哪裏出了問題,以及如何解決它?我可以觀察到它將mnt/sdcard添加到f_path。

+0

http://stackoverflow.com/questions/10992722/how-to-find-path-of-internal-phone-storage-personal-data-internal-sd-card-ext。願這個鏈接能幫助你。 – Raghunandan

+0

是否要複製XYZ文件的內容? –

+0

是的。我需要複製。但問題是路徑 – ChanChow

回答

4

試着用那段代碼。

url = '/mnt/sdcard/download/XYZ.txt'; 
File f_path = new File(url); 
InputStream fis = null; 
fis = new BufferedInputStream(new FileInputStream(f_path)); 

例外來了堂妹Environment.getExternalStorageDirectory();它的自我就給等於

/mnt/sdcard 

祝你好運!

+0

yup。 ;是否有任何影響在消除? – ChanChow

+0

沒有不會影響它,因爲Android目錄標準是相同的每個設備 – dhams

+0

謝謝達赫姆... – ChanChow

1

您的網址變量,只能使用相對路徑:

url = "/download/XYZ.txt"

/mnt/sdcard將來自您的Environment.getExternalStorageDirectory();

+0

我提到的url值是通過文件選擇器活動返回給我的。那麼,我需要修剪以獲取您提到的網址嗎? – ChanChow

+0

如果文件選擇器正在返回完整路徑,請創建僅具有url參數的文件。 '文件f_path =新文件(url);' –

0

你必須做如下:

File sdcard = Environment.getExternalStorageDirectory(); 
File file = new File(sdcard, "/download/XYZ.txt"); 

這將自動獲取您的文件..

之後,你可以用它如下:

InputStream fis = null; 
fis = new BufferedInputStream(new FileInputStream(file.getAbsolutePath())); 

這將讓你的文件的路徑完美!

+0

它沒有工作。其實我正在瀏覽文件到edittext字段。當我選擇文件時,它會返回文件路徑,以便我可以使用上傳。 – ChanChow

+0

如果你想顯示文件路徑到editext中,那麼當然你可以在寫入之後使用「file.getAbsolutePath()」函數來獲取它: File sdcard = Environment.getExternalStorageDirectory(); 文件文件=新文件(sdcard,「/download/XYZ.txt」); – Jai

+0

我的要求我不能給文件的硬編碼值(「/ download/XYZ.txt」。我試圖瀏覽我的手機選擇文件。請看我的代碼,我需要上傳文件後。 – ChanChow