安卓写文件时,一直创建不成功,没有红色错误提示,在调试过程中出现好多问题,如source not found,Class file editor source not found,Factoryorg.eclipse.jdt.ui.ClassFileEditorInputFactory returned null from createElementfor editor id=org.eclipse.jdt.ui.ClassFileEditor name=null等,始终找不到问题所在,最后调试中发现程序运行到createNewFile时,日志中产生如下警告:
java.io.IOException: open failed: EROFS (Read-only file system)---只读文件系统
转载自http://zixun.zhongsou.com/faster/24/75c8d86c3207767967392670dc28c42f.html
问题陈述:
配置文件AndroidManifest中已加入权限操作,可以生成文件夹,就是生成文件时出现上述异常(警告),可以运行,但是没有文件生成。
问题分析:
能够建立文件夹则有读写权限,考虑是路径的问题不合法,所以才访问不到。
解决方案:
保存到sd卡下的sign文件夹。
原来语句:
File file = new File(Environment.getExternalStorageDirectory().getPath()+"/sign/"+filename);
修改为:
File file = new File(Environment.getExternalStorageDirectory().getPath()+"/sign/",filename);
File类构造函数:
public File(File dir,String name)--File制定构造的新的File对象的路径,而String制定新的File名字
Public File(String path)--String,构造一个新的File使用制定的路径(文件夹) public File(String dirPath,String name)--dirPath为指定的文件路径,name为文件的名字 public File(URI uri)--构造新的文件使用URI指定路径
总结:最终发现是自己构造函数调用错误,误以为几种构造函数可以实现相同的功能。
具体如何创建文件夹、文件见下文。