跪求!android 往sd卡里谢文件的源码  就是我有个文件是在assets文件夹里读取的,能显示出来,我想写到sd卡上的某个文件夹里 自己写的老是出错,现跪求一源码,谢谢

解决方案 »

  1.   

    我买的android开发书里面应该有,不过我不知道...
      

  2.   

    之前做过类似的。InputStream is = null;
    is = mContext.getAssets().open("test.mp3");
    copy(is, "sdcard/test.txt");
            //fileTo要拷贝到的文件路径
    public static boolean copy(InputStream in, String fileTo) {  
            try {  
    //            FileInputStream in = new java.io.FileInputStream(fileFrom);  
                FileOutputStream out = new FileOutputStream(fileTo);  
                byte[] bt = new byte[1024];  
                int count;  
                while ((count = in.read(bt)) > 0) {  
                    out.write(bt, 0, count);  
                }  
               in.close();  
                out.close();  
                return true;  
            } catch (IOException ex) {  
                return false;  
            }  
        }  sd卡路径自己google一下怎么获取,要判断的。
      

  3.   


    if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
    if(!dataFile.exists()) {
    try {
    dataFile.createNewFile();
    fos = new FileOutputStream(fileName,true);
                    String title = "content";
    fos.write(title.getBytes());
    fos.flush();
    } catch (IOException e) {
    Log.e(Constants.TAG_EXCEPTION, e.toString());
    }
    }}
      

  4.   

    我是这样写的但是找不到文件,不知道哪里错了帮忙指点下package com.read;   
      
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;import org.apache.http.util.EncodingUtils;import android.app.Activity;
    import android.graphics.Color;
    import android.os.Bundle;
    import android.os.Environment;
    import android.widget.TextView;
      
    public class reading extends Activity{   
           
        public static final String ENCODING = "UTF-8";   
        String InputStream=null;
        @Override  
        protected void onCreate(Bundle savedInstanceState) {   
            super.onCreate(savedInstanceState);   
            setContentView(R.layout.main);  
            TextView tv2=(TextView)findViewById(R.id.tv2);
            tv2.setTextColor(Color.RED);   
            tv2.setTextSize(15.0f); 
            InputStream=getFromAssets("option.xml");
            System.out.print("--------------读入");
            tv2.setText(InputStream);
           
        }   
        //从assets 文件夹中获取文件并读取数据   
        public String getFromAssets(String fileName){   
            String result = "";   
                try {   
                    InputStream in = getResources().getAssets().open(fileName);   
                    //获取文件的字节数   
                    int lenght = in.available();   
                    //创建byte数组   
                    byte[]  buffer = new byte[lenght];   
                    //将文件中的数据读到byte数组中   
                    in.read(buffer);   
                    System.out.print("--------------读入");
                    result = EncodingUtils.getString(buffer, ENCODING);   
                } catch (Exception e) {   
                    e.printStackTrace();   
                   
                }   
                return result;   
        } 
        /////////////
        public class FileUtils {
            private String SDCardRoot;        public FileUtils() {
                    // 得到当前外部存储设备的目录
                    SDCardRoot = Environment.getExternalStorageDirectory()
                                    .getAbsolutePath()
                                    + "/";
            }        /**
             * 在SD卡上创建文件
             * 
             * @param fileName
             * @param dir
             * @return
             * @throws IOException
             */
            public File creaeFileInSDCard(String fileName, String dir)
                            throws IOException {
                    File file = new File(SDCardRoot + dir + File.separator + fileName);
                    file.createNewFile();
                    return file;
                    
            }        /**
             * 在SD卡上创建目录
             * 
             * @param dir
             * @return
             */
            public File createSDDir(String dir) {
                    File dirFile = new File(SDCardRoot + dir);
                    dirFile.mkdir();
                    return dirFile;
            }        /**
             * 判断SD卡上的文件夹是否存在
             * 
             * @param fileName
             * @param path
             * @return
             */
            public boolean isFileExist(String fileName, String path) {
                    File file = new File(SDCardRoot + path + File.separator + fileName);
                    return file.exists();
            }        /**
             * 将一个InputStream里面的数据写入到SD卡中
             * 
             * @param path 路径
             * @param fileName 文件名
             * @param inputStream 输入流
             * @return
             */
            public File write2SDFromInput(String path, String fileName,
                            InputStream InputStream) {
                    File file = null;
                    OutputStream output = null;
                    try {
                            createSDDir(path);
                            file = creaeFileInSDCard(fileName, path);
                            output = new FileOutputStream(file);
                            byte buffer[] = new byte[4 * 1024];
                            int temp;
                            while ((temp = InputStream.read()) != -1) {
                                    output.write(buffer, 0, temp);
                            }
                            output.flush();
                    } catch (IOException e) {
                            e.printStackTrace();
                    } finally {
                            try {
                                    output.close();
                            } catch (Exception e) {
                                    e.printStackTrace();
                            }
                    }
                    return file;
            }    }  }
      

  5.   

    我今天也弄了一天的sdcard读写,还好终于写进去了。上面的代码是估计没什么问题,但是需要先设置sd卡读写权限,否则会报Read-only的一个io异常。祝好运。
      

  6.   


    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />这个权限必须要有