简体   繁体   English

在Android中建立新目录并推送文件

[英]Building new directory and pushing files in Android

I have code that I know worked in another project of mine to create a new folder if it didn't already exist and place files from my project into it. 我有我在我的另一个项目中工作过的代码,如果它不存在,则可以创建一个新文件夹,并将项目中的文件放入其中。 But in my new project the code does nothing. 但是在我的新项目中,代码什么都不做。 What am i doing wrong? 我究竟做错了什么?

File directory = new File(Environment.getExternalStorageDirectory()
                + File.separator + "testing");
            directory.mkdirs();

        File directory2 = new File(Environment.getExternalStorageDirectory()
                + File.separator + "CandooData" + File.separator + "Meds");
        if (!(directory2.isDirectory())) {
            directory2.mkdirs();
        }
        File directory3 = new File(Environment.getExternalStorageDirectory()
                + File.separator + "CandooData" + File.separator + "Meds");
        String[] files;
        if (directory3.isDirectory()) {
            files = directory3.list();
            if (files.length == 0) {
                // directory is empty
                CopyAssets("medsxml", "/Meds");
            }
        }
  1. See the log via logcat. 通过logcat查看日志。

  2. It's possible that you've missed the WRITE_EXTERNAL_STORAGE permission. 您可能错过了WRITE_EXTERNAL_STORAGE权限。

  3. mkdirs() will work just fine, not worse than mkdir(). mkdirs()可以正常工作,不会比mkdir()差。

use this directory.mkdir(); 使用此目录.mkdir(); instead of this directory.mkdirs() ; 而不是这个目录.mkdirs() ;

Below is briefly example 以下是简单的示例

 File folder = new File(Environment.getExternalStorageDirectory()+"/Trip");
        if(!folder.exists()){
            folder.mkdir();
        }
           File newxmlfile = new File(Environment.getExternalStorageDirectory()+"/Trip/"+ RecordID +".xml");
           try{
               newxmlfile.createNewFile();
           }catch(IOException e){

           }

I am using this below method to make directory and save the file in to it. 我正在使用以下方法来建立目录并将文件保存到其中。

private static File APP_FILE_PATH = new File("/sdcard/SpeechTutor");

 p_file_Side_Slow = new File("/sdcard/SpeechTutor/P_SideMovieSlow.mp4");
        p_file_Side_Medium = new File("/sdcard/SpeechTutor/P_SideMovieMedium.mp4");
        p_file_Side_Fast = new File("/sdcard/SpeechTutor/P_SideMovieFast.mp4");

        p_file_Front_Slow = new File("/sdcard/SpeechTutor/P_FrontMovieSlow.mp4");
        p_file_Front_Medium = new File("/sdcard/SpeechTutor/P_FrontMovieMedium.mp4");
        p_file_Front_Fast = new File("/sdcard/SpeechTutor/P_FrontMovieFast.mp4");

 if((!(p_file_Side_Slow.exists())) || (!(p_file_Side_Medium.exists())) || (!(p_file_Side_Fast.exists())) 
                || (!(p_file_Front_Slow.exists()))|| (!(p_file_Front_Medium.exists()))||(!(p_file_Front_Fast.exists()))){
            ArrayList<String> files = new ArrayList<String>();
            files.add("P_SideMovieSlow.mp4");
            files.add("P_SideMovieMedium.mp4");
            files.add("P_SideMovieFast.mp4");

            files.add("P_FrontMovieSlow.mp4");
            files.add("P_FrontMovieMedium.mp4");
            files.add("P_FrontMovieFast.mp4");
            new myAsyncTask().execute(files);
         }



// AsyncTass for the Progress Dialog and to do Background Process
    private class myAsyncTask extends AsyncTask<ArrayList<String>, Void, Void> {         
        ArrayList<String> files;         
        ProgressDialog dialog;         
        @Override         
        protected void onPreExecute() {             
            dialog = ProgressDialog.show(MainScreenActivity.this, "Speech Tutor", "Loading...");         
        }         
        @Override         
        protected Void doInBackground(ArrayList<String>... params) {              
            files = params[0];             
            for (int i = 0; i < files.size(); i++) {                 
                copyFileFromAssetsToSDCard(files.get(i));                
            }             return null;         
        }         
        @Override         
        protected void onPostExecute(Void result) {             
            dialog.dismiss();   
//          myVideoThumbnail.setImageBitmap((Bitmap)ThumbnailUtils.createVideoThumbnail(p_file_Side_Slow.getAbsolutePath(),MediaStore.Video.Thumbnails.MINI_KIND));
//          myVideoView.setVideoURI(p_uri_Side_Medium);
            setVideoURI(sideShow, frontshow, slowShow, mediumShow, fastShow);
        }      
    } 


// Function to copy file from Assets to the SDCard
    public void copyFileFromAssetsToSDCard(String fileFromAssets){
        AssetManager is = this.getAssets();
        InputStream fis;
        try {
            fis = is.open(fileFromAssets);
            FileOutputStream fos;
            if (!APP_FILE_PATH.exists()) {
                APP_FILE_PATH.mkdirs();
            }
            fos = new FileOutputStream(new File(Environment.getExternalStorageDirectory()+"/SpeechTutor",fileFromAssets));
            byte[] b = new byte[8];
            int i;
            while ((i = fis.read(b)) != -1) {
                fos.write(b, 0, i);
            }
            fos.flush();
            fos.close();
            fis.close();
        } 
        catch (IOException e1) {
            e1.printStackTrace();
        }
    }

All Above code will save the file as background process. 以上所有代码将文件保存为后台进程。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM