0

可能重复:
如何将文件写入 android 中的资产文件夹或原始文件夹?

如何将图像存储在 android 的资产/子文件夹中?资产文件夹大小有最大限制吗?实际上,我从网络上获取了一堆图像并尝试将所有图像下载到资产的子文件夹中?有可能吗?怎么做?实际上我的代码如下,它将图像保存在 sdcard 中:-

String filepath=null;
      try {
       //set the download URL, a url that points to a file on the internet
       //this is the file to be downloaded
       URL url = new URL(Url);
       //create the new connection
       HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

       //set up some things on the connection
       urlConnection.setRequestMethod("GET");
       urlConnection.setDoOutput(true); 
        //and connect!
       urlConnection.connect();
       //set the path where we want to save the file
       //in this case, going to save it on the root directory of the
       //sd card.
     File SDCardRoot = Environment.getExternalStorageDirectory();
       //create a new file, specifying the path, and the filename
       //which we want to save the file as.

       String filename= "downloadedFile.png";   // you can download to any type of file ex:.jpeg (image) ,.txt(text file),.mp3 (audio file)
       Log.i("Local filename:",""+filename);
       file = new File(SDCardRoot,filename);
       if(file.createNewFile())
       {
        file.createNewFile();
       }

       //this will be used to write the downloaded data into the file we created
       FileOutputStream fileOutput = new FileOutputStream(file);

       //this will be used in reading the data from the internet
       InputStream inputStream = urlConnection.getInputStream();

       //this is the total size of the file
       int totalSize = urlConnection.getContentLength();
       //variable to store total downloaded bytes
       int downloadedSize = 0;

       //create a buffer...
       byte[] buffer = new byte[1024];
       int bufferLength = 0; //used to store a temporary size of the buffer

       //now, read through the input buffer and write the contents to the file
       while ( (bufferLength = inputStream.read(buffer)) > 0 ) {
        //add the data in the buffer to the file in the file output stream (the file on the sd card
        fileOutput.write(buffer, 0, bufferLength);
        //add up the size so we know how much is downloaded
        downloadedSize += bufferLength;
        //this is where you would do something to report the prgress, like this maybe
        Log.i("Progress:","downloadedSize:"+downloadedSize+"totalSize:"+ totalSize) ;

       }
       //close the output stream when done
       fileOutput.close();
       if(downloadedSize==totalSize)   filepath=file.getPath();

      //catch some possible errors...
      } catch (MalformedURLException e) {
       e.printStackTrace();
      } catch (IOException e) {
       filepath=null;
       e.printStackTrace();
      }
      Log.i("filepath:"," "+filepath) ;

请为此提供一些解决方案。

4

1 回答 1

0

You could not store images in asset folder problematically

it's READ-ONLY

And generally MAX size for asset folder is 1 MB for each file

You can save image in sdcard.

于 2012-07-12T10:18:14.657 回答