Android从SD卡中加载图片或读取信息

[java]  view plain copy
  1. package com.xplus.mytxttest;  
  2.   
  3. import java.io.ByteArrayOutputStream;  
  4. import java.io.File;  
  5. import java.io.FileInputStream;  
  6. import java.io.FileNotFoundException;  
  7. import java.io.FileOutputStream;  
  8. import java.io.IOException;  
  9. import java.io.InputStream;  
  10.   
  11. import android.app.Activity;  
  12. import android.content.Context;  
  13. import android.graphics.Bitmap;  
  14. import android.graphics.BitmapFactory;  
  15. import android.os.Bundle;  
  16. import android.os.Environment;  
  17. import android.view.View;  
  18. import android.view.View.OnClickListener;  
  19. import android.widget.Button;  
  20. import android.widget.EditText;  
  21. import android.widget.ImageView;  
  22. import android.widget.TextView;  
  23. import android.widget.Toast;  
  24.   
  25. public class ActivitySdCard extends Activity {  
  26.   
  27.     private Button btn_write;  
  28.     private Button btn_read;  
  29.     private EditText edit_write;  
  30.     private TextView view_read;  
  31.     private TextView text_info;  
  32.   
  33.     private ImageView img_image1;  
  34.     private ImageView img_image2;  
  35.     private ImageView img_image3;  
  36.     private ImageView img_image4;  
  37.     private ImageView img_image5;  
  38.     private TextView text_image1;  
  39.     private TextView text_image2;  
  40.     private TextView text_image3;  
  41.     private TextView text_image4;  
  42.     private TextView text_image5;  
  43.     private int flag = 0;  
  44.       
  45.   
  46.     @Override  
  47.     protected void onCreate(Bundle savedInstanceState) {  
  48.         // TODO Auto-generated method stub  
  49.         super.onCreate(savedInstanceState);  
  50.         setContentView(R.layout.main_sd);  
  51.         init();  
  52.   
  53.         System.out.println("CodeEncoding:" + getCodeEncoding());  
  54.   
  55.         if (Environment.getExternalStorageState().equals(  
  56.                 Environment.MEDIA_MOUNTED)) {  
  57.             File file = new File(Environment.getExternalStorageDirectory(),  
  58.                     "my.txt");  
  59.             try {  
  60.                 FileInputStream inStream = new FileInputStream(file);  
  61.                 // 内存中开辟一段缓冲区  
  62.                 byte[] buffer = new byte[1024];  
  63.                 // 创建一个字节输出流  
  64.                 ByteArrayOutputStream outStream = new ByteArrayOutputStream();  
  65.                 // 读取出来的数据首先放入缓冲去,,满了之后再写到字符输出流  
  66.                 int len;  
  67.                 while ((len = inStream.read(buffer)) != -1) {  
  68.                     outStream.write(buffer, 0, len);  
  69.                 }  
  70.                 inStream.close();  
  71.                 outStream.close();  
  72.                 System.out.println(outStream.toString());  
  73.                 String[] arrStr = outStream.toString().split("-");  
  74.                 queryPic(arrStr);  
  75.             }  
  76.             catch (Exception e) {  
  77.                 // TODO: handle exception  
  78.             }  
  79.               
  80.   
  81.             btn_read.setOnClickListener(new OnClickListener() {  
  82.                 @Override  
  83.                 public void onClick(View v) {  
  84.                     try {  
  85.                         File sdCardDir = Environment  
  86.                                 .getExternalStorageDirectory();  
  87.                         System.out.println(sdCardDir.toString());  
  88.                         if (Environment.getExternalStorageState().equals(  
  89.                                 Environment.MEDIA_MOUNTED)) {  
  90.                             File readFile = new File(sdCardDir, "my.txt");  
  91.                             FileInputStream istream = new FileInputStream(  
  92.                                     readFile);  
  93.                             // 内存中开辟一段缓冲区  
  94.                             byte[] buffer = new byte[1024];  
  95.                             // 创建一个字节输出流  
  96.                             ByteArrayOutputStream ostream = new ByteArrayOutputStream();  
  97.                             // 读取出来的数据首先放入缓冲去,,满了之后再写到字符输出流  
  98.                             int len;  
  99.                             while ((len = istream.read(buffer)) != -1) {  
  100.                                 ostream.write(buffer, 0, len);  
  101.                             }  
  102.                             ostream.close();  
  103.                             istream.close();  
  104.                             String txtStr = ostream.toString();  
  105.                             view_read.setText(txtStr);  
  106.                         }  
  107.                     } catch (FileNotFoundException e) {  
  108.                         // TODO Auto-generated catch block  
  109.                         e.printStackTrace();  
  110.                     } catch (IOException e) {  
  111.                         // TODO Auto-generated catch block  
  112.                         e.printStackTrace();  
  113.                     }  
  114.                 }  
  115.             });  
  116.   
  117.             btn_write.setOnClickListener(new OnClickListener() {  
  118.                 @Override  
  119.                 public void onClick(View v) {  
  120.                     try {  
  121.                         System.out.println("write");  
  122.                         File sdCardDir = Environment  
  123.                                 .getExternalStorageDirectory();  
  124.                         System.out.println(Environment  
  125.                                 .getExternalStorageState());  
  126.                         if (Environment.getExternalStorageState().equals(  
  127.                                 Environment.MEDIA_MOUNTED)) {  
  128.                             System.out.println("write");  
  129.                             File saveFile = new File(sdCardDir, "my.txt");  
  130.                             FileOutputStream fos = new FileOutputStream(  
  131.                                     saveFile);  
  132.                             fos.write(edit_write.getText().toString()  
  133.                                     .getBytes());  
  134.   
  135.                             fos.close();  
  136.                             Toast.makeText(ActivitySdCard.this"写入成功",  
  137.                                     Toast.LENGTH_SHORT).show();  
  138.                         }  
  139.   
  140.                     } catch (FileNotFoundException e) {  
  141.                         // TODO Auto-generated catch block  
  142.                         e.printStackTrace();  
  143.                     } catch (IOException e) {  
  144.                         // TODO Auto-generated catch block  
  145.                         e.printStackTrace();  
  146.                     }  
  147.   
  148.                 }  
  149.             });  
  150.         }  
  151.   
  152.     }  
  153.   
  154.     private void init() {  
  155.         btn_read = (Button) findViewById(R.id.button_sd_read);  
  156.         btn_write = (Button) findViewById(R.id.button_sd_write);  
  157.         edit_write = (EditText) findViewById(R.id.editText_sd_edit);  
  158.         view_read = (TextView) findViewById(R.id.textView_sd_text);  
  159.         text_info = (TextView) findViewById(R.id.textView_sd_info);  
  160.   
  161.         img_image1 = (ImageView) findViewById(R.id.imageView_sd_image1);  
  162.         img_image2 = (ImageView) findViewById(R.id.imageView_sd_image2);  
  163.         img_image3 = (ImageView) findViewById(R.id.imageView_sd_image3);  
  164.         img_image4 = (ImageView) findViewById(R.id.imageView_sd_image4);  
  165.         img_image5 = (ImageView) findViewById(R.id.imageView_sd_image5);  
  166.         text_image1 = (TextView)findViewById(R.id.textView_sd_text1);  
  167.         text_image2 = (TextView)findViewById(R.id.textView_sd_text2);  
  168.         text_image3 = (TextView)findViewById(R.id.textView_sd_text3);  
  169.         text_image4 = (TextView)findViewById(R.id.textView_sd_text4);  
  170.         text_image5 = (TextView)findViewById(R.id.textView_sd_text5);  
  171.           
  172.     }  
  173.       
  174.     private void queryPic(String[] str){  
  175.         img_image1.setImageBitmap(BitmapFactory.decodeFile(str[flag]));  
  176.         text_image1.setText("名称:"+str[++flag]+"\n价格:"+str[++flag]);  
  177.         img_image2.setImageBitmap(BitmapFactory.decodeFile(str[++flag]));  
  178.         text_image2.setText("名称:"+str[++flag]+"\n价格:"+str[++flag]);  
  179.         img_image3.setImageBitmap(BitmapFactory.decodeFile(str[++flag]));  
  180.         text_image3.setText("名称:"+str[++flag]+"\n价格:"+str[++flag]);  
  181.         img_image4.setImageBitmap(BitmapFactory.decodeFile(str[++flag]));  
  182.         text_image4.setText("名称:"+str[++flag]+"\n价格:"+str[++flag]);  
  183.         img_image5.setImageBitmap(BitmapFactory.decodeFile(str[++flag]));  
  184.         text_image5.setText("名称:"+str[++flag]+"\n价格:"+str[++flag]);  
  185.     }  
  186.   
  187.     private String getCodeEncoding() {  
  188.         String code = "gb2312";  
  189.         try {  
  190.             InputStream inputStream = new FileInputStream(  
  191.                     Environment.getExternalStorageDirectory() + "/my.txt");  
  192.             byte[] head = new byte[3];  
  193.             inputStream.read(head);  
  194.             if (head[0] == -1 && head[1] == -2) {  
  195.                 code = "UTF-16";  
  196.             }  
  197.             if (head[0] == -2 && head[1] == -1) {  
  198.                 code = "Unicode";  
  199.             }  
  200.             if (head[0] == -17 && head[1] == -69 && head[2] == -65) {  
  201.                 code = "UTF-8";  
  202.             }  
  203.   
  204.         } catch (FileNotFoundException e) {  
  205.             // TODO Auto-generated catch block  
  206.             e.printStackTrace();  
  207.         } catch (IOException e) {  
  208.             // TODO Auto-generated catch block  
  209.             e.printStackTrace();  
  210.         }  
  211.   
  212.         return code;  
  213.     }  
  214.   
  215.     @Override  
  216.     protected void onDestroy() {  
  217.         // TODO Auto-generated method stub  
  218.         super.onDestroy();  
  219.     }  
  220.   
  221. }  

xml

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:orientation="vertical" >  
  6.     <LinearLayout  
  7.         android:layout_width="match_parent"  
  8.         android:layout_height="wrap_content" >  
  9.         <Button  
  10.             android:id="@+id/button_sd_write"  
  11.             android:layout_width="wrap_content"  
  12.             android:layout_height="wrap_content"  
  13.             android:text="write" />  
  14.         <Button  
  15.             android:id="@+id/button_sd_read"  
  16.             android:layout_width="wrap_content"  
  17.             android:layout_height="wrap_content"  
  18.             android:text="read" />  
  19.     </LinearLayout>  
  20.     <LinearLayout  
  21.         android:layout_width="match_parent"  
  22.         android:layout_height="wrap_content" >  
  23.         <EditText  
  24.             android:id="@+id/editText_sd_edit"  
  25.             android:layout_width="wrap_content"  
  26.             android:layout_height="wrap_content"  
  27.             android:layout_weight="1"  
  28.             android:ems="10"  
  29.             android:inputType="textPersonName" >  
  30.             <requestFocus />  
  31.         </EditText>  
  32.     </LinearLayout>  
  33.     <TextView  
  34.         android:id="@+id/textView_sd_text"  
  35.         android:layout_width="wrap_content"  
  36.         android:layout_height="wrap_content"  
  37.         android:text="读取的内容" />  
  38.     <LinearLayout  
  39.         android:layout_width="match_parent"  
  40.         android:layout_height="wrap_content"  
  41.         android:orientation="vertical" >  
  42.         <TableLayout  
  43.             android:layout_width="wrap_content"  
  44.             android:layout_height="wrap_content"  
  45.             android:layout_gravity="center" >  
  46.             <TableRow  
  47.                 android:id="@+id/tableRow1"  
  48.                 android:layout_width="wrap_content"  
  49.                 android:layout_height="wrap_content" >  
  50.                 <ImageView  
  51.                     android:id="@+id/imageView_sd_image1"  
  52.                     android:layout_width="wrap_content"  
  53.                     android:layout_height="wrap_content"  
  54.                     android:src="@drawable/ic_action_search" />  
  55.                 <ImageView  
  56.                     android:id="@+id/imageView_sd_image2"  
  57.                     android:layout_width="wrap_content"  
  58.                     android:layout_height="wrap_content"  
  59.                     android:src="@drawable/ic_action_search" />  
  60.                 <ImageView  
  61.                     android:id="@+id/imageView_sd_image3"  
  62.                     android:layout_width="wrap_content"  
  63.                     android:layout_height="wrap_content"  
  64.                     android:src="@drawable/ic_action_search" />  
  65.                 <ImageView  
  66.                     android:id="@+id/imageView_sd_image4"  
  67.                     android:layout_width="wrap_content"  
  68.                     android:layout_height="wrap_content"  
  69.                     android:src="@drawable/ic_action_search" />  
  70.                 <ImageView  
  71.                     android:id="@+id/imageView_sd_image5"  
  72.                     android:layout_width="wrap_content"  
  73.                     android:layout_height="wrap_content"  
  74.                     android:src="@drawable/ic_action_search" />  
  75.             </TableRow>  
  76.             <TableRow  
  77.                 android:id="@+id/tableRow2"  
  78.                 android:layout_width="wrap_content"  
  79.                 android:layout_height="wrap_content" >  
  80.                 <TextView  
  81.                     android:id="@+id/textView_sd_text1"  
  82.                     android:layout_width="wrap_content"  
  83.                     android:layout_height="wrap_content"  
  84.                     android:layout_gravity="center"  
  85.                     android:text="1"  
  86.                     android:textSize="20dip" />  
  87.                 <TextView  
  88.                     android:id="@+id/textView_sd_text2"  
  89.                     android:layout_width="wrap_content"  
  90.                     android:layout_height="wrap_content"  
  91.                     android:layout_gravity="center"  
  92.                     android:text="2"  
  93.                     android:textSize="20dip" />  
  94.                 <TextView  
  95.                     android:id="@+id/textView_sd_text3"  
  96.                     android:layout_width="wrap_content"  
  97.                     android:layout_height="wrap_content"  
  98.                     android:layout_gravity="center"  
  99.                     android:text="3"  
  100.                     android:textSize="20dip" />  
  101.                 <TextView  
  102.                     android:id="@+id/textView_sd_text4"  
  103.                     android:layout_width="wrap_content"  
  104.                     android:layout_height="wrap_content"  
  105.                     android:layout_gravity="center"  
  106.                     android:text="4"  
  107.                     android:textSize="20dip" />  
  108.                 <TextView  
  109.                     android:id="@+id/textView_sd_text5"  
  110.                     android:layout_width="wrap_content"  
  111.                     android:layout_height="wrap_content"  
  112.                     android:layout_gravity="center"  
  113.                     android:text="5"  
  114.                     android:textSize="20dip" />  
  115.             </TableRow>  
  116.         </TableLayout>  
  117.     </LinearLayout>  
  118.     <TextView  
  119.         android:id="@+id/textView_sd_info"  
  120.         android:layout_width="wrap_content"  
  121.         android:layout_height="wrap_content"  
  122.         android:layout_gravity="center"  
  123.         android:text="图片描述信息" />  
  124.   
  125. </LinearLayout>  

如果要读取txt中的信息,可以用BufferedReader实现一行一行的读取,然后将读取的数据添加到一个List中,再通过List获取需要的数据即可。

[java]  view plain copy
  1. File file = new File(firstPath + secondPath + thirdPath[flag],  
  2.                         "/akinndo.txt");  
  3.   
  4.                 BufferedReader reader = new BufferedReader(new FileReader(file));  
  5.                 String r = reader.readLine();  
  6.                 while (r != null) {  
  7.                     String[] informations = r.split(",");  
  8.                     Map<String, String> map = new HashMap<String, String>();  
  9.                     map.put("dir", firstPath + informations[0]);  
  10.                     map.put("description", informations[1]);  
  11.                     list.add(map);  
  12.                     r = reader.readLine();  
  13.                 }  

你可能感兴趣的:(android,内存,图片)