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

swjtu_lhy 2010-06-08 07:52:37
本人最近在做一个在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();
}
});
...全文
2320 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
swjtu_lhy 2010-06-10
  • 打赏
  • 举报
回复
我试过了,那样还是不行,不过我在真机上面实验了一下,发现没有上述的问题,我觉得可能是我以前重启模拟器的方法不正确,我最初实验的时候,是直接关闭模拟器的,里面文件当中的内容应当是没有被完全写入,但是当我操作完控件后,我再等待十几秒钟,这个时候,我再重启模拟器,就没有问题,应当是我之前重启模拟器的方法不正确!
guopeixin 2010-06-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 swjtu_lhy 的回复:]

谢谢大家啊,我已经在XML文件中加入了那个sd卡的操作权限,但是还是不行,麻烦大家看一下那个程序哪里还有写的不完善的地方,另外,是不是需要找一个真机测试,是不是真机会要比模拟器好用一点,感觉那个模拟器好像不大好用啊!
[/Quote]
2楼兄弟说的方法你尝试了么?
swjtu_lhy 2010-06-08
  • 打赏
  • 举报
回复
谢谢大家啊,我已经在XML文件中加入了那个sd卡的操作权限,但是还是不行,麻烦大家看一下那个程序哪里还有写的不完善的地方,另外,是不是需要找一个真机测试,是不是真机会要比模拟器好用一点,感觉那个模拟器好像不大好用啊!
guopeixin 2010-06-08
  • 打赏
  • 举报
回复
先看看重启之前有没有写进去吧,因为sdk1.6后写入SD卡时需要加入WRITE_EXTERNAL_STORAGE权限许可,否则不成功。
另外,按照帮助文档的解释,flush()方法并不是必须的吧;
yyy025025025 2010-06-08
  • 打赏
  • 举报
回复
dataout.flush();
dataout.close();
Android输入法手势操作源码,作者: Himi   输入法手势识别   注意: android.gesture这个类在api-4(SDK1.6)才开始支持的!   提醒:默认存到SD卡,所以别忘记在AndroidMainfest.xml加上SD卡读写权限!   关于两种方式创建模拟器的SDcard在【Android2D游戏开发之十】有详解    if (Environment.getExternalStorageState() != null) {// 这个方法在试探终端是否有sdcard!    if (!file.exists()) {// 判定是否已经存在手势文件    // 不存在文件的时候我们去直接把我们的手势文件存入    gestureLib.addGesture(name, gesture);    if (gestureLib.save()) {////保存到文件    gov.clear(true);//清除笔画   // 注意保存的路径默认是/sdcard/gesture ,so~别忘记AndroidMainfest.xml加上读写权限!   // 这里抱怨一下,咳咳、其实昨天就应该出这篇博文的,就是因为这里总是异常,今天仔细看了   // 才发现不是没写权限,而是我虽然在AndroidMainfest.xml写了权限,但是写错了位置..哭死!   tv.setText("保存手势成功!因为不存在手势文件," + "所以第一次保存手势成功会默认先创" +   "建了一个手势文件!然后将手势保存到文件.");    et.setText("");    gestureToImage(gesture);    } else {    tv.setText("保存手势失败!");    }    } else {//当存在此文件的时候我们需要先删除此手势然后把新的手势放上    //读取已经存在的文件,得到文件的所有手势    if (!gestureLib.load()) {//如果读取失败    tv.setText("手势文件读取失败!");    } else {//读取成功   ……内详,请下载代码参阅。

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧