» 首頁 » 討論區 » Android程式設計 »android端下載server端的txt檔

android端下載server端的txt檔

發表人: learner
積分: 44
發表時間: 2011-12-13 15:00:03
請問,android端要如何下載server端的txt檔??

我知道2.3有downloadmanager可以用,

但是網路上找的範例都看不太懂,

不知道怎麼把txt存到android的sd卡的某個目錄下

可以請版大做個範例嗎??感謝!!

P.S. 或是有其他的方法有也可以做到下載txt檔??
發表人: Seachaos
積分: 2432
發表時間: 2011-12-14 15:56:10
你可以試看看用以下方法

[sea:javaCode]
URL url = new URL("http://www...");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
InputStream is = con.getInputStream();

File ofe = new File(savePath);
if(!ofe.exists()){
ofe.createNewFile();
}
// write string
FileOutputStream fos = new FileOutputStream(ofe);
byte data[] = new byte[1024];
int length = 0, getPer = 0;
while((getPer = is.read(data))!=-1){
length+=getPer;
fos.write(data, 0, getPer);
}

fos.flush();
fos.close();
is.close();
con.disconnect();
[/sea]
發表人: learner
積分: 44
發表時間: 2011-12-20 11:42:39
請問File ofe = new File(savePath)裡的savePath是我要儲存檔案的路徑嗎?

如果是的話,我該怎麼把它指到sdcard裡?

是要另外宣告字串來指定儲存位置嗎?
發表人: Seachaos
積分: 2432
發表時間: 2011-12-23 01:14:55
是的
savePath就是路徑
你可以用Environment.getExternalStorageDirectory()來取得SD Card的Path
例如
[sea:javaCode]
File ofe = new File(Environment.getExternalStorageDirectory()+"/test.txt");
[/sea]
發表人: learner
積分: 44
發表時間: 2011-12-23 16:58:18
那url那部分是連結到server端儲存檔案的位置吧!

有一定要存在server端的../wwwroot/..底下嗎?
發表人: Ye.Jian.Yin
積分: 6
發表時間: 2011-12-28 22:19:40
url是server端的網址
例如 http://example/test.txt 一樣
和Server的目錄沒有關系喔
發表人: 訪客
發表時間: 2012-01-10 16:45:44
請問為什麼我照著打可是還是會有錯誤阿?
權限也給了是有什麼東西需要擴充嗎?
發表人: 訪客
發表時間: 2012-01-10 16:55:56
請問如果是下載SERVICE上的TXT檔但是沒有要存檔
只是要取得文件的內容的話應該怎麼改阿@@
發表人: Seachaos
積分: 2432
發表時間: 2012-01-10 22:37:16
如果你要從Android上直接取得Server上的文字的話這段就可以了
[sea:javaCode]
URL url = new URL("http://www...");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
InputStream is = con.getInputStream();
[/sea]

再把InputStream轉成String就好了

另外你是否方便貼一下你的Code?
這樣才有辦法知道你的問題在那邊
發表人: 訪客
發表時間: 2012-01-11 21:46:44
我原本的做法是寫入檔案然後再讀出來@@
InputStream轉成String 怎麼轉換阿
不能用toString嗎@@
發表人: 訪客
發表時間: 2012-01-12 17:42:31
可以用看看以方的方法

[sea:javaCode]
int c = 0; String str = "";
while((c = inputStream.read())!=-1)
str += (char)c;
[/sea]

str就會是字串了
發表人: 訪客
發表時間: 2012-01-12 19:24:32
inputStream不是資料流嗎?
為什麼用整數裝然後再轉成字元
就可以了阿?
發表人: 訪客
發表時間: 2012-01-12 21:05:14
是資料流沒錯,所以這裡不是看成數字,是看成Byte
也就可以轉成char了
然後再merge到string內
發表人: 訪客
發表時間: 2012-01-12 22:38:10
int c = 0; String str = "";
while((c = inputStream.read())!=-1)
str += (char)c;
可是這樣的話c不是整數型態嗎?
為什麼會變成byte[]