title: How to check file exist or not and if not create a new file in sdcard in async task
body: <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>