注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

民主与科学

独立之人格,自由之思想

 
 
 

日志

 
 

android中读写SD Card文件  

2010-06-17 13:41:06|  分类: 数据存储 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
1. 使用mksdcard命令创建一个名为 sdcard.img的128M(M需大写)SD卡镜像。
mksdcard 128M sdcard.img
2.把sdcard.img拷贝到D:\projects2下,在Eclipse中的Run Configuration对话框中设置启动参数。
-sdcard D:\projects2\sdcard.img
这样SD Card就可用了。
3.sdcard中加入内容 
adb push E:\Xunlei\give.mp3 /sdcard/give.mp3。
4.应用程序中对文件的读写
注意如果在应用程序中要对SD card进行写操作的话,
需要加上androi权限android.permission.WRITE_EXTERNAL_STORAGE
如下:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
实例1
        Button button6 = (Button) findViewById(R.id.Button06);
        OnClickListener listener6 = new OnClickListener() {
            
@Override
            public void onClick(View v) {
                createSDFile();
            }
        };
        button6.setOnClickListener(listener6);
        Button button7 = (Button) findViewById(R.id.Button07);
        OnClickListener listener7 = new OnClickListener() {
            @Override
            public void onClick(View v) {
                writeSDFile(kFileName);
            }
        };
        button7.setOnClickListener(listener7);
        
        Button button8 = (Button) findViewById(R.id.Button08);
        OnClickListener listener8 = new OnClickListener() {
            @Override
            public void onClick(View v) {
                readSDFile(kFileName);
            }
        };
        button8.setOnClickListener(listener8);
        
    String kFileName="/sdcard/uad2/test.txt";
    void createSDFile()
    {
        createSDFile(kFileName);
    }
    final static String kSdCardRoot="sdcard";
    void createSDFile(String fileFullName)
    {
        if(fileFullName.charAt(0)=='/')
            fileFullName=fileFullName.substring(1, fileFullName.length());
        String name[]=fileFullName.split("/");
        if(name==null||name.length<2)
            return;
        
if(!name[0].equals(kSdCardRoot))
        {
            Log.i(tag,fileFullName+" is not a file"+name[0]);
            return;
        }
        File sdDir=new File("/"+kSdCardRoot);
       
 if(!sdDir.exists())
        {
            Log.i(tag, "SD card is not exists");
            return;
        }
       
 if(!sdDir.canWrite())
        {
            Log.i(tag, sdDir.length()+"SD card can not be wrote"+sdDir.canRead());
            return;
        }
        File dir=sdDir;
       
 for(int i=1;i<name.length-1;i++)
        {
            dir=new File(dir.getAbsolutePath()+"/"+name[i]);
            if(dir.exists())
                continue;
            boolean res=dir.mkdir();
           
 if(!res)
            {
                Log.i(tag, "create dir:"+res+" fail"+name[i]);
                return;
            }
        }
        String fileName=name[name.length-1].trim();
        
if(fileName.length()>0)
        {
            File file=new File(dir.getAbsolutePath()+"/"+name[name.length-1]);
           
 if(!file.exists())
            {
                
try{
                    file.createNewFile();
                }
catch(IOException e)
                {
                    Log.e(tag, "creat File erro:",e);
                }
            }
        }

    }
    void writeSDFile(String fileName)
    {
        File file=new File(fileName);
        if(!file.exists())
            createSDFile(fileName);
        
if(!file.canWrite())
        {
            Log.i(tag,"file:"+file.getAbsoluteFile()+" can not to be wrote");
            return;
        }
        String content="hello:"+System.currentTimeMillis();
        FileOutputStream os=null;
        
try{
            os=new FileOutputStream(file);
            os.write(content.getBytes());
            Log.i(tag, "write:"+content);
        }
        
catch(IOException e)
        {
            Log.e(tag, "write file",e);
        }
        
finally
        {
            if(os!=null)
            {
                try{
                os.flush();
                os.close();
                }catch(IOException e)
                {
                    Log.e(tag, "close file",e);
                }
            }
        }
    }
    void readSDFile(String fileName)
    {
        String content;
        FileInputStream is=null;
        File file=new File(fileName);
        
if(!file.exists())
        {
            Log.i(tag,file.getAbsolutePath()+" is not exists");
           
 return;
        }
        if(!file.canRead())
        {
            Log.i(tag,file.getAbsolutePath()+" can not be read");
           
 return;
        }        
        try{
            is=new FileInputStream(file);
            byte buffer[]=new byte[is.available()];
            is.read(buffer);
            content=new String(buffer);
            Log.i(tag, "read SD file:"+content);
           
 //InputStreamReader inReader = new InputStreamReader(is); 
        }
        catch(IOException e)
        {
            Log.e(tag, "write file",e);
        }
        
finally
        {
            if(is!=null)
            {
                try{
                is.close();
                }catch(IOException e)
                {
                    Log.e(tag, "close file",e);
                }
            }
        }        
    }
  评论这张
 
阅读(992)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017