Как загрузить файл, только если он был обновлен

Я загружаю изображение из Интернета на SD-карту. Сначала проверить файл существует на SD-карте, если нет, то загрузите файл. Если файл уже находится на SD-карте, проверьте последнюю измененную дату существующего файла и сравните его с файлом сервера. Если дата файла изображения сервера является последней, чем файл SD-карты, тогда загрузите файл в противном случае, когда он вернет файл.

Я сделал это. Файл загружается на SD-карту, я должен проверить его, является ли это способом записи для достижения этой задачи или является их любым другим способом выполнения одной и той же задачи.

Так вы могли бы помочь мне в отношении того же. Вот мой код:

package com.test; import java.io.File; import java.io.FileOutputStream; import java.net.URL; import java.net.URLConnection; import java.util.Date; import java.util.Iterator; import java.util.Map; import java.util.Set; /*import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; */ import android.app.Activity; import android.graphics.Bitmap; public class FileChache { File sdDir; public FileChache(Activity activity) { // Find the directry to save cache image //Gets the Android external storage directory.---> getExternalStorageState() //MEDIA_MOUNTED if the media is present and mounted at its mount point with read/write access. String sdState = android.os.Environment.getExternalStorageState(); if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) { sdDir=new File(android.os.Environment.getExternalStorageDirectory(),"sa"); } else sdDir=activity.getCacheDir(); if(!sdDir.exists()) sdDir.mkdirs(); } public File getFile(String url) { //identify images by hashcode String filename= String.valueOf(url.hashCode()); System.out.println("The File name is:"+filename); // Check whether the file is exist in SD Card File f= new File(sdDir, filename); Date fileDate = new Date(f.lastModified()); System.out.println("The file date is:"+fileDate.toGMTString()); // Check whether the file is exist in SD Card if(!f.exists()) { return f; } else { //Check the last update of file File file= new File(filename); Date date= new Date(f.lastModified()); System.out.println("The last Modified of file is:"+date.toGMTString()); /*HttpClient httpclient = new DefaultHttpClient(); HttpGet httpget = new HttpGet(url);*/ try { URL urll = new URL(url); String ss= String.valueOf(urll.hashCode()); URLConnection conn= urll.openConnection(); Map map = conn.getHeaderFields(); Set set = map.entrySet(); Iterator iterator = set.iterator(); while (iterator.hasNext()) { System.out.println("The Data is :"+iterator.next()); } String header=conn.getHeaderField("Last-Modified"); System.out.println("The header is:"+header); long header1=conn.getIfModifiedSince(); Date aaa= new Date(header1); System.out.println("The getIFLastmodifiedSince is:----"+aaa); Date ServerDate_timeStamp = new Date(header); System.out.println("The headerDate(The serverDate_Timestamp) is:"+ServerDate_timeStamp); long filemodifiedDate= f.lastModified(); System.out.println("The last(Long) modified is:"+filemodifiedDate); Date SD_cardFileModifiedDate = new Date(filemodifiedDate); System.out.println("File file Modified Date Date is:"+ SD_cardFileModifiedDate); if(SD_cardFileModifiedDate.before(ServerDate_timeStamp)) { File ff= new File(sdDir,ss); return ff; } else { return f; } } catch(Exception e) { e.printStackTrace(); } } return null; } public void writeFile(Bitmap bmp, File f) { FileOutputStream out = null; try { out = new FileOutputStream(f); bmp.compress(Bitmap.CompressFormat.PNG, 80, out); } catch (Exception e) { e.printStackTrace(); } finally { try { if (out != null ) out.close(); } catch(Exception ex) {} } } } /*File f= new File(sdDir,filename); System.out.println("***The last modified time of file is:****"+f.lastModified()); Date d= new Date(f.lastModified()); System.out.println("The lst modified Date is:"+d.toGMTString()); Calendar calendar = Calendar.getInstance(); Date mNew_timeStamp = calendar.getTime(); System.out.println("*****new Time_Stamp:*****"+mNew_timeStamp.toGMTString()); if(f.exists()) { System.out.println("The file is exist"); } else { System.out.println("It does not exist"); }*/ //if(header) // System.out.println(conn.getHeaderFieldKey(j)+":"+ header); /*HttpClient httpclient = new DefaultHttpClient(); HttpGet httpget = new HttpGet(url); HttpResponse response = httpclient.execute(httpget);*/ 

Intereting Posts
Android Volley error.getMessage () пуст Способ публикации с использованием неработающего волейбола Преобразование временной метки в виде строки в android Как установить исходный код ImageViews на Android? GoogleMap V2 загружает карту случайного андроида GetWidth не возвращает значение после масштабирования Как рассчитать разницу между 2 входящими кадрами с камеры (открыть CV) Рисованное тонирование для api <21 Как отключить прокрутку RecyclerView, кроме программных Что было бы простым регулярным выражением для проверки пароля во время регистрации? Может ли кто-то раз и навсегда объяснять, что не могу вызвать definVisibility () – никогда не видел подключения для pid Возможно ли, чтобы последний элемент в RecyclerView был прикреплен к нижней части, если нет необходимости прокручивать? Eclipse не распознает мой Android-планшет Проблемы с привязкой Xamarin.Android JmDNS Одновременно воспроизводите два видео в одном VideoView