2012-07-20 27 views
20

Bir URL'den bir ePub dosyasını indiriyorum.Dosyayı indirmeden önce URL'den dosya adını ayrın.

Şimdi kullanıcı aynı dosyayı yeniden indirin çalışırsa hangi bir mekanizma uygulamak istiyoruz, o uyarı/hata mesajı ve tekrar indirilecek gerektiğini dosyayı almalısınız.

Bunu uygulamak için, kütüphanemde bulunan dosyanın adını, indirmeye çalıştığı dosyanın adıyla kontrol etmem gerekiyor.

Ancak dosya adı değil, yalnızca this download link var.

Dosyayı varolan dosyayla karşılaştırmak için dosya adını nasıl indirebilirim?

android olarak

cevap

46

sen the guessFileName() method kullanabilirsiniz:

URLUtil.guessFileName(url, null, null) 

Alternatif Java basit bir çözüm olabilir:

String fileName = url.substring(url.lastIndexOf('/') + 1); 

(url varsayarsak biçimindedir: http://xxxxxxxxxxxxx/filename.ext)

+0

http://developer.android.com/reference/java/net/URL.html#getPath() Çok kitap koleksiyonu içeren bir bağlantı olduğunu varsayalım (örn için. 'Www.bookstore.com'), hangi ı URL' www.bookstore ile bir kitap (seçin. com/book1.epub') kütüphaneme indirilmelidir. ** Belirli bir kitabın URL'sini nasıl alacağım ** i.e. www.bookstore.com/book1.epub' ??? 'webView.getUrl()', ilk yük haricinde hiç işlenmez. – GAMA

+2

Çözümünüz sadece param (para param = değer) veya ankraj (#anchor) yoksa çalışır. –

2

Dosya isimlerini karşılaştırmak zorunda değilsin. Dosyayı mutlak yolla Dosya nesnesini yapın ve dosya olup olmadığını kontrol edin.

protected boolean need2Download(String fileName) { 

    File basePath = new File(BOOK_STORE_PATH); 

    File fullPath = new File(basePath, fileName); 

    if (fullPath.exists()) 
     return false; 
    return true; 
} 

protected void downloadFile(String url) { 
    String fileName = url.substring(url.lastIndexOf('/') + 1); 

    if (need2Download(fileName)) { 
     // download 
    } 
} 
4

sade tutun: Bir şeyleri basitleştirmek gereken URL # getPath() kullanarak düşünüyorum

/** 
* This function will take an URL as input and return the file name. 
* <p>Examples :</p> 
* <ul> 
* <li>http://example.com/a/b/c/test.txt -> test.txt</li> 
* <li>http://example.com/ -> an empty string </li> 
* <li>http://example.com/test.txt?param=value -> test.txt</li> 
* <li>http://example.com/test.txt#anchor -> test.txt</li> 
* </ul> 
* 
* @param url The input URL 
* @return The URL file name 
*/ 
public static String getFileNameFromUrl(URL url) { 

    String urlString = url.getFile(); 

    return urlString.substring(urlString.lastIndexOf('/') + 1).split("\\?")[0].split("#")[0]; 
} 
1

.

public static String getFileNameFromUrl(URL url) { 

    String urlPath = url.getPath(); 

    return urlPath.substring(urlPath.lastIndexOf('/') + 1); 
} 

See,

+0

Kullanıyorum, ancak işleri basitleştirmediğinden, getPath() işleviyle, httt: //domain.com/file.ext? A = 1 # anchor gibi sorgu parametrelerine sahip URL'yi işleyebilirsiniz. @TimAutin benim için ama daha okunabilir. – Davide

İlgili konular