问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

android 怎么读取sd扩展卡上的内容

发布网友 发布时间:2022-09-19 17:24

我来回答

2个回答

热心网友 时间:2023-10-29 16:18

调用Environment的getExternalStorageState方法
判断手机上是否插入了sd卡,并且应用程序具有读写sd卡的权限。

//如果手机已经插入sd卡,且应用程序具有读写sd卡的能力,方法返回true
Environment.getExternalStorageState()
.equals(Environment.MEDIA_MOUNTED)

调用Environment的getExternalStorageDirectory()方法来获取外部存储器,也就是sd卡的目录。

Environment.getExternalStorageDirectory()

使用FileInputStream、FileOutputStream、FileReader或FileWriter读、写sd卡里的文件

必须要的权限
<!-- 在SD卡中创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <!-- 向SD卡写入数据权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

这里用一个项目说明

AndroidManifest.xml
文件内容如图

页面代码结构如下

onCreate部分代码

final String FILE_NAME = "/test.bin";

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 获取两个按钮
Button read = (Button) findViewById(R.id.read);
Button write = (Button) findViewById(R.id.write);
// 获取两个文本
final EditText edit1 = (EditText) findViewById(R.id.edit1);
final EditText edit2 = (EditText) findViewById(R.id.edit2);
// 为write按钮绑定事件监听
write.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View source) {
// 将edit1中的内容写入文件
write(edit1.getText().toString());
edit1.setText("");
}
});

read.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 读取指定文件中的内容,并显示出来
edit2.setText(read());
}
});
}

read()读取方法

private String read() {
try {
// 如果手机插入了SD卡,而且应用程序具有访问SD的权限
if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) {
// 获取SD卡对应的存储目录
File sdCardDir = Environment.getExternalStorageDirectory();
// 获取指定文件对应的输入流
FileInputStream fis = new FileInputStream( sdCardDir.getCanonicalPath() + FILE_NAME);
// 将指定输入流包装成BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
StringBuilder sb = new StringBuilder("");
String line = null;
// 循环读取文件内容
while ((line = br.readLine()) != null) {
sb.append(line);
}
// 关闭资源
br.close();
return sb.toString();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

write(String content)写入方法

private void write(String content) {
try {
// 如果手机插入了SD卡,而且应用程序具有访问SD的权限
if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) {
// 获取SD卡的目录
File sdCardDir = Environment.getExternalStorageDirectory();
File targetFile = new File(sdCardDir .getCanonicalPath() + FILE_NAME);
// 以指定文件创建 RandomAccessFile对象
RandomAccessFile raf = new RandomAccessFile( targetFile, "rw");
// 将文件记录指针移动
raf.seek(targetFile.length());
// 输出文件内容
raf.write(content.getBytes());
// 关闭RandomAccessFile
raf.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}

热心网友 时间:2023-10-29 16:18

可以查看文件管理 其中有分为sd卡和内部储存
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我这个配置能玩大唐无双2吗 PK什么的能卡么? 求高手解答 这样的配置还要加什么玩大唐无双才不卡 这个配置能玩大唐无双双开吗? windows7旗舰版系统玩大唐无双零双开卡怎么办?卡死了。 玩大唐无双的时候双开过地图太卡怎么解决啊 全民枪战我用QQ号,但它说密码数字英文,下划线组成,应该怎样弄啊?_百 ... 小太阳取暖器头晕呕吐 取暖器用的会头晕吗,可能的原因和使用注意事项 男孩姓孙含越字好名字 简单特别的男孩名字越 中间是越的男孩名字大全 android怎么读取sd卡中的文件 对付白蚁和蟑螂有没有什么好办法? 投篮姿势.. 为什么在投篮的时候,身体抖动幅度会特别大? 坐月子能喝红豆汤吗 我跳投时右腿总是不自觉的翘起来?怎么避免? 投篮时后脚跟为什么会抬起来? 一步一个脚印什么意思 一步一个脚印解释 药品管理法对退药的规定 小企业用什么管理软件好呢?最好是免费的。 咖啡豆如何加工成咖啡 大使馆查询签证显示调查的数据什么意思 咖啡店保险费一个月大概多少 投资者要认清平台,游易商品购销中心来提醒你? 社会消费品零售总额完成情况自检自查报告 药品类易制毒药品购用证明有效期是多久 开心抚顺周边行__走进石文 抚顺石文易品购物还招聘吗? 易品购app乐币可以提现吗? 国际法未加禁止行为有些什么 android 怎么读取sd卡 篮球投篮问题 投篮姿势问题,!!! 投篮手的问题 红枣汤怎么做好吃,红豆红枣汤的家常做法 为什么我后仰跳投后 没落地之前 右脚会向前踢 艾尔塔瑞尔怎么招募兽人 中土世界暗影魔多能驯服多少兽人 手表的双蝴蝶扣怎么开!摘不下来了 。。。在线等。。。求救。。。 关于投篮的姿势问题? 历代志下 3:3-12 和合本能解读一下这段的经文吗? 《Holes》txt下载在线阅读全文,求百度网盘云资源 《Holes》pdf下载在线阅读,求百度网盘云资源 为什么人在投篮的时候喜欢右脚伸出? 自制芋圆红豆怎么做好吃又简单,做法图解 职场中的35岁是不是一道坎?跳槽是否进退两难? 你们没有服务热线吗? 你们有没有遇到过一个很大的坎,感觉自己快坚持不下去了? 你们有没有?没得罪人家,但是人家就老跟你过不去,老找你的麻烦,但人家对其他人都挺不错的 你们有没有发现如果你在乎的越多烦恼就越多?