文件的存储(android).doc_第1页
文件的存储(android).doc_第2页
文件的存储(android).doc_第3页
文件的存储(android).doc_第4页
文件的存储(android).doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android-文件保存与读取文章分类:移动开发 作者注:由于我在测试这个功能的时候发现文件名无法使用中文(sdk2.2 + 模拟器),如果有哪为高手无意中浏览此文章后,能对这个问题予以指点,我将感激不尽。呵呵。 *注: 在Activity中有 getFileDir() 和 getCacheDir(); 方法可以获得当前的手机自带的存储空间中的当前包文件的路径 getFileDir() - /data/data/cn.xxx.xxx(当前包)/files getCacheDir() - /data/data/cn.xxx.xxx(当前包)/cache Java代码 1. 2. 1.编写文件读取与写入功能实现类FileService 3. 4. packagecn.android.service; 5. 6. importjava.io.ByteArrayOutputStream; 7. importjava.io.FileInputStream; 8. importjava.io.FileOutputStream; 9. 10. importandroid.content.Context; 11. importandroid.util.Log; 12. 13. /* 14. *文件保存与读取功能实现类 15. *authorAdministrator 16. * 17. *2010-6-28下午08:15:18 18. */19. publicclassFileService 20. 21. publicstaticfinalStringTAG=FileService; 22. privateContextcontext; 23. 24. /得到传入的上下文对象的引用 25. publicFileService(Contextcontext) 26. this.context=context; 27. 28. 29. /* 30. *保存文件 31. * 32. *paramfileName文件名 33. *paramcontent文件内容 34. *throwsException 35. */36. publicvoidsave(StringfileName,Stringcontent)throwsException 37. 38. /由于页面输入的都是文本信息,所以当文件名不是以.txt后缀名结尾时,自动加上.txt后缀 39. if(!fileName.endsWith(.txt) 40. fileName=fileName+.txt; 41. 42. 43. bytebuf=fileName.getBytes(iso8859-1); 44. 45. Log.e(TAG,newString(buf,utf-8); 46. 47. fileName=newString(buf,utf-8); 48. 49. Log.e(TAG,fileName); 50. 51. /Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND 52. /Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。 53. /Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。 54. /MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。 55. /如果希望文件被其他应用读和写,可以传入: 56. /openFileOutput(output.txt,Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE); 57. 58. FileOutputStreamfos=context.openFileOutput(fileName,context.MODE_PRIVATE); 59. fos.write(content.getBytes(); 60. fos.close(); 61. 62. 63. /* 64. *读取文件内容 65. * 66. *paramfileName文件名 67. *return文件内容 68. *throwsException 69. */70. publicStringread(StringfileName)throwsException 71. 72. /由于页面输入的都是文本信息,所以当文件名不是以.txt后缀名结尾时,自动加上.txt后缀 73. if(!fileName.endsWith(.txt) 74. fileName=fileName+.txt; 75. 76. 77. FileInputStreamfis=context.openFileInput(fileName); 78. ByteArrayOutputStreambaos=newByteArrayOutputStream(); 79. 80. bytebuf=newbyte1024; 81. intlen=0; 82. 83. /将读取后的数据放置在内存中-ByteArrayOutputStream 84. while(len=fis.read(buf)!=-1) 85. baos.write(buf,0,len); 86. 87. 88. fis.close(); 89. baos.close(); 90. 91. /返回内存中存储的数据 92. returnbaos.toString(); 93. 94. 95. 96. 97. 98. 2.编写Activity类: 99. packagecn.android.test; 100. 101. importandroid.app.Activity; 102. importandroid.os.Bundle; 103. importandroid.util.Log; 104. importandroid.view.View; 105. importandroid.widget.Button; 106. importandroid.widget.EditText; 107. importandroid.widget.Toast; 108. importcn.android.service.FileService; 109. 110. publicclassTestAndroidActivityextendsActivity 111. /*Calledwhentheactivityisfirstcreated.*/112. 113. /得到FileService对象 114. privateFileServicefileService=newFileService(this); 115. /定义视图中的filename输入框对象 116. privateEditTextfileNameText; 117. /定义视图中的contentText输入框对象 118. privateEditTextcontentText; 119. /定义一个土司提示对象 120. privateToasttoast; 121. 122. 123. Override124. publicvoidonCreate(BundlesavedInstanceState) 125. super.onCreate(savedInstanceState); 126. setContentView(R.layout.main); 127. 128. /得到视图中的两个输入框和两个按钮的对象引用 129. Buttonbutton=(Button)this.findViewById(R.id.button); 130. Buttonread=(Button)this.findViewById(R.id.read); 131. fileNameText=(EditText)this.findViewById(R.id.filename); 132. contentText=(EditText)this.findViewById(R.id.content); 133. 134. /为保存按钮添加保存事件 135. button.setOnClickListener(newView.OnClickListener() 136. Override137. publicvoidonClick(Viewv) 138. 139. StringfileName=fileNameText.getText().toString(); 140. Stringcontent=contentText.getText().toString(); 141. 142. /当文件名为空的时候,提示用户文件名为空,并记录日志。 143. if(isEmpty(fileName) 144. toast=Toast.makeText(TestAndroidActivity.this,R.string.empty_filename,Toast.LENGTH_LONG); 145. toast.setMargin(RESULT_CANCELED,0.345f); 146. toast.show(); 147. Log.w(fileService.TAG,Thefilenameisempty); 148. return; 149. 150. 151. /当文件内容为空的时候,提示用户文件内容为空,并记录日志。 152. if(isEmpty(content) 153. toast=Toast.makeText(TestAndroidActivity.this,R.string.empty_content,Toast.LENGTH_LONG); 154. toast.setMargin(RESULT_CANCELED,0.345f); 155. toast.show(); 156. Log.w(fileService.TAG,Thefilecontentisempty); 157. return; 158. 159. 160. /当文件名和内容都不为空的时候,调用fileService的save方法 161. /当成功执行的时候,提示用户保存成功,并记录日志 162. /当出现异常的时候,提示用户保存失败,并记录日志 163. try 164. fileService.save(fileName,content); 165. toast=Toast.makeText(TestAndroidActivity.this,R.string.success,Toast.LENGTH_LONG); 166. toast.setMargin(RESULT_CANCELED,0.345f); 167. toast.show(); 168. Log.i(fileService.TAG,Thefilesavesuccessful); 169. catch(Exceptione) 170. toast=Toast.makeText(TestAndroidActivity.this,R.string.fail,Toast.LENGTH_LONG); 171. toast.setMargin(RESULT_CANCELED,0.345f); 172. toast.show(); 173. Log.e(fileService.TAG,Thefilesavefailed); 174. 175. 176. 177. ); 178. 179. 180. /为读取按钮添加读取事件 181. read.setOnClickListener(newView.OnClickListener() 182. Override183. publicvoidonClick(Viewv) 184. 185. /得到文件名输入框中的值 186. StringfileName=fileNameText.getText().toString(); 187. 188. /如果文件名为空,则提示用户输入文件名,并记录日志 189. if(isEmpty(fileName) 190. toast=Toast.makeText(TestAndroidActivity.this,R.string.empty_filename,Toast.LENGTH_LONG); 191. toast.setMargin(RESULT_CANCELED,0.345f); 192. toast.show(); 193. Log.w(fileService.TAG,Thefilenameisempty); 194. return; 195. 196. 197. /调用fileService的read方法,并将读取出来的内容放入到文本内容输入框里面 198. /如果成功执行,提示用户读取成功,并记录日志。 199. /如果出现异常信息(例:文件不存在),提示用户读取失败,并记录日志。 200. try 201. contentText.setText(fileService.read(fileName); 202. toast=Toast.makeText(TestAndroidActivity.this,R.string.read_success,Toast.LENGTH_LONG); 203. toast.setMarg

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论