Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to check file exist or not and if not create a new file in sdcard in async task
    text
    copied!<p>I want to download pdf from server and store on sdcard. I try something like following code but it will not go in else condition, as I am not created a file still it will giving MSG as file exist. Why is it so?? </p> <pre><code>String pdf; String filenameWithExtension=""; protected void onCreate(Bundle savedInstanceState) { Intent intent=getIntent(); pdf=intent.getStringExtra("pdfurl"); String PATH2 = Environment.getExternalStorageDirectory()+"/pictures"; Log.v("log_tag initial path", "PATH: " + PATH2); File file2 = new File(PATH2); if(file2.exists()==true) { }else { Log.v("directory is created", "new dir"); file2.mkdir(); } /**extracting the pdf filname from url**/ int slashIndex = pdf.lastIndexOf('/'); int dotIndex = pdf.lastIndexOf('.'); filenameWithExtension=pdf.substring(slashIndex + 1); DownloadFile downloadFile = new DownloadFile(filenameWithExtension); downloadFile.execute(pdf); } private class DownloadFile extends AsyncTask&lt;String, Integer, String&gt;{ String filename=""; public DownloadFile(String _filename) { this.filename=_filename; } String PATH = Environment.getExternalStorageDirectory()+"/pictures/"+filename; File filecheck=new File(PATH); @Override protected String doInBackground(String... str) { Log.v("name of file",this.filename); if(filecheck.exists()){ Log.v("in if condition", "file is alredy exist"); }else{ Log.v("in else condition","file not present...."); try { URL url = new URL(str[0]); HttpURLConnection c = (HttpURLConnection)url.openConnection(); c.setRequestMethod("GET"); c.setDoOutput(true); c.connect(); // this will be useful so that you can show a typical 0-100% progress bar int lenghtOfFile = c.getContentLength(); // downlod the file // InputStream input = new BufferedInputStream(url.openStream()); //OutputStream output = new FileOutputStream("/sdcard/somewhere/nameofthefile.ext"); String PATH = Environment.getExternalStorageDirectory()+ "/pictures/"; Log.v("log_tag", "PATH: " + PATH); File file = new File(PATH); Boolean check=filecheck.createNewFile(); Log.v("check file creation..::", check.toString()); if(file.mkdirs()==false) { Log.v("file is alredy exist in sdcard", "exist file"); }else { Log.v("file is created in card", "new dir"); file.mkdirs(); } File outputFile = new File(file,filenameWithExtension); FileOutputStream fos = new FileOutputStream(outputFile); InputStream is = c.getInputStream(); long total = 0; byte[] buffer = new byte[1024]; int len1 = 0; while ((len1 = is.read(buffer)) != -1) { total +=len1; publishProgress((int)(total*100/lenghtOfFile)); fos.write(buffer, 0, len1); } fos.close(); is.close(); } catch (IOException e) { Log.d("log_tag of background", "Error: " + e); } } Log.v("In aync task filename extension",filenameWithExtension); return filenameWithExtension; } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload