android 写文件到sd卡问题小记

    事情是这样子的....

    这天我开始编写项目调试工具,高大上不?-----其实就是记录实时网络请求和崩溃日志相关等的小工具(此处一个会心的微笑)。

    然后我是这样写的,首先创建一个activity.....废话不多说了,我们直入主题!!!

    先看看我做的效果:

    就长酱紫!

    我的思路大概是这样子的,把网络请求的请求日志和响应日志获取到,然后开启子线程写到文件中,进入调试助手界面时,再去保存网络日志和崩溃日志的文件夹读取文件列表展示出来。

    首先,大家都知道,写文件之前肯定要读写权限的。来,我们把它粘贴到AndroidManifest.xml中
          <!-- 存储权限 -->
            <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

还有就是android6.0系统以后都需要动态申请所需要的权限,我们去适配一下就好了。(很多机子都是默认给存储权限的,但是华为等部分品牌的机子需要动态申请,所以我们统一动态写一下就好了)。 可能大家直接写好文件路径创建文件会不成功,所以我给大家踩坑了,只需要把父路径创建一下文件夹就行了。代码走起::: > if (!file.exists()) {
File dir = new File(file.getParent());
dir.mkdirs();
file.createNewFile();
}
     好了,我们就可以开始正儿八经的跑起来了!嗯~~~,效果还是挺不错的,我手头的几个机子(8.0,9.0都有)跑起来都很完美,于是乎,我就放心的用了几周![得意][此处有一条翘起来的狗尾巴摇来摇去]

    巴特,我有天打包给同事测试,然后打开我们的调试助手界面,纳尼,空空如也,一条记录也没有,什么鬼!

    刚开始了解到同事的手机是可以外插一张sd存储卡的,就以为是外置存储卡写文件出现了什么错误,但后来在其他同事朋友的帮忙下试了几个其他可装SD卡的机型,发现有的手机是可以写到内存卡中的,所以我决定借来同事的那个手机来测测。经过我的一番努力(死磨硬泡+贿赂),小哥哥终于肯借给我来调试一波,这样我就开始愉快的耍他的手机。

    实践发现,写文件时,会报一个io异常如下:

        java.io.IOException: Invalid argument
at java.io.UnixFileSystem.createFileExclusively0(Native Method)
at java.io.UnixFileSystem.createFileExclusively(UnixFileSystem.java:281)
at java.io.File.createNewFile(File.java:1000) 后来在我的n多次测试下,我发现导致出现这个异常的的原因是文件名命名的问题(文件名中有空格和冒号)。 敲黑板!总结一下写文件到存储卡的要点:
1.清单文件中声明读写权限,并且使用时要动态申请。
2.写文件前须得保证其父路径是创建好的。
3.文件命名需要注意,不超过255个字符,避免文件名首字符使用+ - .(避免和隐藏文件混淆),避免文件名使用空格,制表符以及:@#$%[]()*等;此外,“/”是绝不能使用的,因为在android系统里,“/”是创建文件夹的标识。
好了,今天的分享就到此为止,你们get到要点了吗!

android 写文件到sd卡问题小记的更多相关文章

  1. android之写文件到sd卡

    1.main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:a ...

  2. [android] 保存文件到SD卡

    /****************2016年5月4日 更新*****************************/ 知乎:为什么很多Android应用要把文件写到/sdcard目录下而不是写到/d ...

  3. Android下载文件到SD卡

    HttpURLConnection 上传方式: 尝试理解这两种流的区别: InputStreamReader 的读取方式: //创建一个URL对象 URL url = new URL(urlStrin ...

  4. android保存文件到SD卡中

    想把文件保存到SD卡中,一定要知道SD卡的路径,有人说可以用File explore来查看,这种方法不太好,因为随着android版本的升级,SD卡的路径可能会发生改变.在1.6的时候SD的路径是/s ...

  5. cygwin下烧写文件到sd卡中

    在cygwin下将firmware_sdcard.bin写入到sd卡中(cygwin需要以管理员身份启动) 1查看sd分区情况 cat /proc/partitions  (为了找到sd卡的标记) 2 ...

  6. Android -- 写xml到SD卡中

    信息类                                                                                          private ...

  7. 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

    1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...

  8. Android入门开发之SD卡读写操作(转)

    SD卡的读写是我们在开发android 应用程序过程中最常见的操作.下面介绍SD卡的读写操作方式: 1. 获取SD卡的根目录 String  sdCardRoot = Environment.getE ...

  9. Android数据存储之SD卡

    为了更好的存取应用程序的大文件数据,应用程序需要读. 写SD卡上的文件.SD卡大大扩充手机的存储能力. 操作SD首先要加权限: <!--在SDCard中创建与删除文件权限 --> < ...

随机推荐

  1. spring集成Quartz时区问题造成任务晚执行八小时

    项目中在Spring中集成了Quartz,配置的每日凌晨执行的定时任务都是到了八点多才执行,经过一番查找,可能是时区问题造成的. 一种解决办法是在JVM启动参数中增加 --Duser.timezone ...

  2. octopress第三方插件:博文同步工具syncPost

    为了增加外链等考虑,独立博客往往有将博文同步到其他博客社区的需求.自己人肉黏贴的方式笨拙.重复,对于程序猿而言,着实不可取. 我在 github 上找到了 syncPost 这个针对 octopres ...

  3. javascript 中英文字符长度和截断处理

    因:javascript中的String类自带的length属性 和 substr()方法虽然能判断和截取出字符个数,但是对字节个数却没有处理的方法(众所周知,中文字符占两个字节,英文只占一个) 果: ...

  4. Shell Step by Step (3) —— Stdin &amp; if

    4.输入输出 #! /bin/bash # Read users input and then get his name read -p "Please input your first n ...

  5. 音频、视频等文件格式(.ts、.meta)及其认识

    MPEG:Moving Picture Experts Group,动态图像专家组, JPEG:Joint Photographic Experts Group,联合图像专家组 1. .ts .ts ...

  6. 广义逆高斯分布(Generalized Inverse Gaussian Distribution)及修正贝塞尔函数

    1. PDF generalized inverse Gaussian distribution (GIG) 是一个三参数的连续型概率分布: f(x)=(a/b)p/22Kp(ab−−√)xp−1e− ...

  7. Android官方教程翻译(4)——启动另一个Activity

    Starting Another Activity 启动另一个Activity PREVIOUSNEXT THIS LESSON TEACHES YOU TO 这节课教你 1.   Respond t ...

  8. 至HDFS附加内容

    在最近的项目开发中遇到的问题: 需要产生良好hdfs文件的其他内容.但使用在线版1.0.3.见发现官方文件,于1.0.4支持的文件的版本号之后append 一下是向hdfs中追加信息的操作方法 假设你 ...

  9. Why I Choose Delphi Summary

    Over the summer, there has been a number of blog posts on this topic, but I haven't seen a complete ...

  10. 从入门机器学习的零单排:OctaveMatlab经常使用绘图知识

    OctaveMatlab经常使用绘图知识 之前一段时间在coursera看了Andrew ng的机器学习的课程,感觉还不错,算是入门了.这次打算以该课程的作业为主线,对机器学习基本知识做一下总结.小弟 ...