I wrote this code for downloading some files in my android application but now downloaded files are in the root without any special order and it looks very bad! So I want to know how can I add a folder for my application's downloaded files?
A code line to explain the path of output :
 OutputStream output = new FileOutputStream(Environment.getExternalStorageDirectory() + "/" + downloadedfileName);
And here is my code:
private class DownloadFileFromURL extends AsyncTask<String, String, String> {
        private String downloadedfileName;
         private ProgressDialog pDialog;
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            Toast.makeText(getApplicationContext(), "بارگذاری...", Toast.LENGTH_SHORT).show();
            pDialog = new ProgressDialog(DownloadActivity.this);
            pDialog.setMessage("کتاب در حال بارگذاري، لطفا منتظر بمانيد...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(false);
            pDialog.show();
        }
        @Override
        protected void onPostExecute(String result) {
            // TODO Auto-generated method stub
            pDialog.dismiss();
            AlertDialog.Builder builder = new AlertDialog.Builder(DownloadActivity.this)
            .setTitle("دانلود کتاب با موفقیت انجام شد")
            .setMessage("از دانلود شما  سپاسگذاریم.")
            .setNeutralButton("خواهش میکنم", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface arg0, int arg1) {
                    Intent i = new Intent(DownloadActivity.this, LibActivity.class);
                    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    DownloadActivity.this.startActivity(i);
                    DownloadActivity.this.finish();
                }
            });
    builder.create().show();
        }
        public void setDownloadedFileName(String downloadedfileName){
            this.downloadedfileName = downloadedfileName;
        }
        /**
         * Downloading file in background thread
         * */
        @Override
        protected String doInBackground(String... surl) {
            int count;
            try {
                URL url = new URL(surl[0]);
                URLConnection conection = url.openConnection();
                conection.connect();
                // this will be useful so that you can show a typical 0-100%
                // progress bar
                int lenghtOfFile = conection.getContentLength();
                // download the file
                InputStream input = new BufferedInputStream(url.openStream(),
                        8192);
                // Output stream
                //OutputStream output = new FileOutputStream(Environment
                //        .getExternalStorageDirectory().toString()
                //        + "/data/" + downloadedfileName);
                OutputStream output = new FileOutputStream(Environment.getExternalStorageDirectory() + "/ketabha/" + downloadedfileName);
                byte data[] = new byte[1024];
                long total = 0;
                while ((count = input.read(data)) != -1) {
                    total += count;
                    // publishing the progress....
                    // After this onProgressUpdate will be called
                    // publishProgress("" + (int) ((total * 100) / lenghtOfFile));
                    // writing data to file
                    output.write(data, 0, count);
                }
                // flushing output
                output.flush();
                // closing streams
                output.close();
                input.close();
            } catch (Exception e) {
                Log.e("Error: ", e.getMessage());
            }
            return null;
        }
    }
 
     
     
    