当前位置:编程学习 > wap >>

Android 模拟器中SD卡文件读写问题

   本人最近在做一个在android实现sim卡卡号绑定功能的实验,我是将绑定时用到的匹配文件存储在SD卡下,当易做图作程序界面中的某一按钮控件后,可向相应的匹配文件中写入数据,但是我通过使用另外的一个按钮控件向文件写入其他内容后,在我重启系统后,我发现android模拟器下的文件中的内容全部为空,什么内容都没有了,请问一下大家这是什么原因呢?以下是我的部分操作代码,请大家指教。

   Buttonrewrite.setOnClickListener(new OnClickListener()
   {
         public void onClick(View v)
         {                  
            DataOutputStream dataout = null;
            FileOutputStream fout = null;
//           String data = "1354";
        
            try
            {
                fout = new FileOutputStream("\\sdcard\\data.dat");
                dataout = new DataOutputStream(fout);
                
                try
                {
               Thread.sleep(1000);
                 }
                catch(Exception ex)
                {
                 
                }
      
                dataout.writeBytes(imsi);
       
               dataout.close();
               fout.close();
            }
            catch(Exception ex)
            {
              Toast.makeText(Banding.this, "重新写入有错误", Toast.LENGTH_LONG).show();
            }
              AlertDialog.Builder Rewrite= new AlertDialog.Builder(Banding.this);
             
              Rewrite.setTitle("关于重新写入号码")
                     .setMessage("重新写入成功")
                     .show();
            }
        });
       
        ButtonSet.setOnClickListener(new OnClickListener()
        {
            public void onClick(View v)
            {
         String config = "open";
         FileOutputStream matchfile = null;
         DataOutputStream dataout = null;
        
         try
         {      
           matchfile = new FileOutputStream("\\sdcard\\matchfile.dat");
           dataout = new DataOutputStream(matchfile);
           
                    try
                    {
                 Thread.sleep(1000);
                    }
                    catch(Exception ex)
                    {
                 
                     }
     
           dataout.writeBytes(config);

           dataout.close();
           matchfile.close();
         }
         catch(Exception ex)
         {
            Toast.makeText(Banding.this, "设置关闭错误", Toast.LENGTH_LONG).show();
         }
        
         AlertDialog.Builder DialogSet = new AlertDialog.Builder(Banding.this);
         DialogSet.setTitle("关于绑定SIM卡")
                  .setMessage("开启绑定功能")
                  .show();
         }
        });
        
        ButtonCancel.setOnClickListener(new OnClickListener()
        {
         public void onClick(View v)
         {
         String config = "close";
         FileOutputStream matchfile = null;
         DataOutputStream dataout = null;
        
         try
         {
             matchfile = new FileOutputStream("\\sdcard\\matchfile.dat");
            dataout = new DataOutputStream(matchfile);
                
            try
                      {
                     Thread.sleep(1000);
                      }
                      catch(Exception ex)
                      {
                 
                       }
    
            dataout.writeBytes(config);
            
            dataout.close();        
            matchfile.close();
         }
         catch(Exception ex)
         {
            Toast.makeText(Banding.this, "设置开启错误", Toast.LENGTH_LONG).show();
         }
        
         AlertDialog.Builder DialogCancel = new AlertDialog.Builder(Banding.this);
         DialogCancel.setTitle("关于绑定SIM卡")
                     .setMessage("关闭绑定功能")
                     .show();
         }
        });
        --------------------编程问答-------------------- dataout.flush();
dataout.close(); --------------------编程问答-------------------- 先看看重启之前有没有写进去吧,因为sdk1.6后写入SD卡时需要加入WRITE_EXTERNAL_STORAGE权限许可,否则不成功。
另外,按照帮助文档的解释,flush()方法并不是必须的吧; --------------------编程问答-------------------- 谢谢大家啊,我已经在XML文件中加入了那个sd卡的操作权限,但是还是不行,麻烦大家看一下那个程序哪里还有写的不完善的地方,另外,是不是需要找一个真机测试,是不是真机会要比模拟器好用一点,感觉那个模拟器好像不大好用啊! --------------------编程问答--------------------
引用 3 楼 swjtu_lhy 的回复:
谢谢大家啊,我已经在XML文件中加入了那个sd卡的操作权限,但是还是不行,麻烦大家看一下那个程序哪里还有写的不完善的地方,另外,是不是需要找一个真机测试,是不是真机会要比模拟器好用一点,感觉那个模拟器好像不大好用啊!

2楼兄弟说的方法你尝试了么? --------------------编程问答-------------------- 我试过了,那样还是不行,不过我在真机上面实验了一下,发现没有上述的问题,我觉得可能是我以前重启模拟器的方法不正确,我最初实验的时候,是直接关闭模拟器的,里面文件当中的内容应当是没有被完全写入,但是当易做图作完控件后,我再等待十几秒钟,这个时候,我再重启模拟器,就没有问题,应当是我之前重启模拟器的方法不正确!
补充:移动开发 ,  Android
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,