ฉันจะดาวน์โหลดไฟล์ไปยังโฟลเดอร์แอปพลิเคชันได้อย่างไร?

รหัสของฉันอนุญาตให้คุณบันทึกไฟล์ที่ดาวน์โหลดลงในการ์ด SD เท่านั้น จะบันทึกการดาวน์โหลดภายในแอปพลิเคชันได้อย่างไร

รหัส:

URL url = new URL(aurl[0]);
URLConnection conexion = url.openConnection();
conexion.connect();

int lenghtOfFile = conexion.getContentLength();
Log.d("ANDRO_ASYNC", "Lenght of file: " + lenghtOfFile);

InputStream input = new BufferedInputStream(url.openStream());
FileOutputStream fos = openFileOutput("try.pdf", Context.MODE_PRIVATE);

byte data[] = new byte[1024];

long total = 0;

    while ((count = input.read(data)) != -1) {
        total += count;
        publishProgress(""+(int)((total*100)/lenghtOfFile));
        fos.write(data, 0, count);
    }

    fos.flush();
    fos.close();
    input.close();
} catch (Exception e) {}
return null;

}

ควรเปลี่ยนเส้นทางนี้ไปที่อื่นเท่านั้น?


person jlopez    schedule 27.06.2012    source แหล่งที่มา


คำตอบ (2)


ตามเอกสาร Android

คุณสามารถบันทึกไฟล์ลงในที่จัดเก็บข้อมูลภายในของอุปกรณ์ได้โดยตรง ตามค่าเริ่มต้น ไฟล์ที่บันทึกไว้ในที่จัดเก็บข้อมูลภายในจะเป็นส่วนตัวสำหรับแอปพลิเคชันของคุณ และแอปพลิเคชันอื่นๆ จะไม่สามารถเข้าถึงได้ (และผู้ใช้ก็ไม่สามารถเข้าถึงได้เช่นกัน) เมื่อผู้ใช้ถอนการติดตั้งแอปพลิเคชันของคุณ ไฟล์เหล่านี้จะถูกลบออก

String FILENAME = "hello_file";
String string = "hello world!";

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
person rajpara    schedule 27.06.2012
comment
คุณสามารถเขียน fos.write(string.getBytes()); ภายใน while loop และตามตรรกะของคุณคุณต้องใช้โค้ดด้านบน - person rajpara; 27.06.2012
comment
ในตัวอย่างของคุณที่ควรมี String string? - person jlopez; 27.06.2012
comment
โอเค ขอบคุณ ฉันคิดว่าฉันเข้าใจสิ่งที่คุณต้องการบอกฉัน แต่ปัญหาคือไฟล์จะต้องดาวน์โหลดไฟล์ก่อน และที่นี่ดูเหมือนว่ารหัสสำหรับไฟล์ที่ดาวน์โหลดไปแล้ว - person jlopez; 27.06.2012
comment
คุณต้องนำข้อมูลจาก inputsteam และเขียนลงในเอาท์พุตสตรีมนั่นแหละ - person rajpara; 27.06.2012
comment
ขอขอบคุณที่อดทนรอกับฉัน ฉันได้อัปเดตรหัสของฉันแล้ว คุณสามารถดูด้านบน ฉันจะลองดูว่ามันใช้งานได้หรือไม่ - person jlopez; 27.06.2012

how could save the download within the application itself?

คุณต้องชัดเจนว่ามันหมายถึงอะไรถ้าคุณต้องการบันทึกมันในโฟลเดอร์ Raw หรือ Assets ซึ่งมันเป็นไปไม่ได้ คุณสามารถจัดเก็บไฟล์ในไดเร็กทอรี Data

openFileOutput("car.pdf",mode)

โหมดสามารถเป็นส่วนตัว, world_redable, world_writable

person Vipul    schedule 27.06.2012
comment
ฉันได้อัปเดตโค้ดของฉันแล้ว ส่วนของโค้ดของฉันควรแทนที่ด้วยโค้ดของคุณใช่ไหม หรือมันไร้ประโยชน์และควรเริ่มต้นใหม่อีกครั้ง? - person jlopez; 27.06.2012