Как переименовать скачанный файл в android

  1. Я создаю файл с помощью задачи Async, имя файла - «Книга», как в моем приведенном ниже коде.
  2. Когда я загружаю данные в это время, я создаю файл с именем «Книга» после завершения загрузки. Как теперь изменить имя файла «Книга» на другое имя в методе onPostExecute?

public class MyDownloaderAsyncTask extends AsyncTask<String, Void, Boolean>  {

    private DownloadManager.DownloadCompletedListner mListner;
    public BookProperties mBookDetails;

    public MyDownloaderAsyncTask(DownloadManager.DownloadCompletedListner listener, BookProperties bookdetails) {
        mListner = listener;
        mBookDetails = bookdetails;

    }

    @Override
    protected Boolean doInBackground(String... strings) {

             Log.i(TAG, "Success Download canceled 1111");
             String tMainFolder = String.valueOf(BaseApplication.getInstance().getAppContext().getDir("MonnFamily", Context.MODE_PRIVATE));
             tMainFolder += "/Book" + mBookDetails.getBookId();  //file which download name
             Log.i(TAG, "Assynctask Ma" + tMainFolder);
             Log.i(TAG, "book id and book name" + mBookDetails.getBookId() + mBookDetails.getBookName());
             downloadBookDetails(tMainFolder, ContentfulConstants.BOOK_MAIN_IMAGE + ".png", mBookDetails.getBookMainImage());
             downloadBookDetails(tMainFolder, ContentfulConstants.BOOK_MAIN_AUDIO + ".mp3", mBookDetails.getBookSound());

             for (PageDetailProperties pageDetails : mBookDetails.getPageDetail()) {

                 String tPageNumber = pageDetails.getPageNumber().toString();
                 downloadBookDetails(tMainFolder, ContentfulConstants.PAGE_IMAGE + tPageNumber + ".png", pageDetails.getPageImage());
                 downloadBookDetails(tMainFolder, ContentfulConstants.PAGE_AUDIO + tPageNumber + ".mp3", pageDetails.getPageAudio());
                 downloadBookDetails(tMainFolder, ContentfulConstants.PAGE_TEXT + tPageNumber + ".txt", pageDetails.getPageText());

             }

        return true;

    }




    protected void onPostExecute(Boolean result) {
        Log.i(TAG, "Execute Download befor");
        //This is run on the UI thread so you can do as you wish here
        if (result) {
            Log.i(TAG, "Success Download");
            ((LibraryView) BaseApplication.getInstance().getCurrentActivity()).hideActivityView();
            mListner.downloadCompleted();
           // mBookDetails = pBook;


//          //  mBookDetails = pBook;
//            String  tMainFolder = String.valueOf(BaseApplication.getInstance().getAppContext().getDir("MonnFamily", Context.MODE_PRIVATE));
//            Log.i(TAG, "Book downloadBookData" + tMainFolder);
//            tMainFolder += "/Book" + mBookDetails.getBookId();
//            tMainFolder + = "/BookDownload" + mBookDetails.getBookId();
//            Log.i(TAG, "Post Assync in DownloadManager" + tMainFolder);
//
//            File directory = new File(tMainFolder);
//            File directory1 = new File(tMainFolder);
//            if (directory.exists()) {
//                directory.renameTo(directory1);
//                Log.i(TAG, "Download Manager Directory" + directory1);
//            }

        }
    }




    private void downloadBookDetails(String pMainFolder, String pFileName, String pDownloadURL) {
        Log.i(TAG, "Coming to this downloadBookDetails ");
        try {
            URL url = new URL(pDownloadURL);
            Log.i(TAG, "pDownload URL"+  url);
            URLConnection ucon = url.openConnection();
            ucon.setReadTimeout(5000);
            ucon.setConnectTimeout(10000);


            InputStream is = ucon.getInputStream();
            BufferedInputStream inStream = new BufferedInputStream(is, 1024 * 5);

            File directory = new File(pMainFolder, pFileName);
            Log.i(TAG, "File Name dir" + directory);
            FileOutputStream outStream = new FileOutputStream(directory);
            byte[] buff = new byte[5 * 1024];

            int len;
            while ((len = inStream.read(buff)) != -1) {
                outStream.write(buff, 0, len);

            }
            outStream.flush();
            outStream.close();
            inStream.close();
        } catch (Exception e) {
            //Add Network Error.
            Log.i(TAG, "Download Error Exception " + e.getMessage());

            e.printStackTrace();
        }
    }
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
565
2

Ответы 2

новый файл ("/ Book" + mBookDetails.getBookId ()). renameTo (новый файл ("/ BookDownload" + mBookDetails.getBookId ())

используйте этот рабочий пример, чтобы переименовать File

File sdcard=new File(tMainFolder+"/Book/");
File old=new File(sdcard,mBookDetails.getBookId());
File to = new File(sdcard, "renamefile.jpg");
boolean success=old.renameTo(to);

Другие вопросы по теме