Android 简易读写文件操作.doc_第1页
Android 简易读写文件操作.doc_第2页
Android 简易读写文件操作.doc_第3页
Android 简易读写文件操作.doc_第4页
Android 简易读写文件操作.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

Android 简易读写文件操作(转)代码如下:1.保存文件的主要代码保存的主代码 1 bSave.setOnClickListener(new View.OnClickListener() 2 3 Override 4 public void onClick(View v) 5 / TODO Auto-generated method stub 6 resId=R.string.success; 7 file_name=filename.getText().toString(); 8 file_content=filecontent.getText().toString(); 9 /* openFileOutput API10 * FileOutputStream openFileOutput (String name, int mode)11 * Open a private file associated with this Contexts application package for writing. Creates the file if it doesnt already exist.12 */13 /* Context四种模式的API14 * Context.MODE_APPEND -if the file already exists then write data to the end of the existing file instead of erasing it.15 * Context.MODE_PRIVATE -the default mode, where the created file can only be accessed by the calling application (or all applications sharing the same user ID). 16 * Context.MODE_WORLD_READABLE -allow all other applications to have read access to the created file.17 * Context.MODE_WORLD_WRITEABLE -allow all other applications to have write access to the created file.18 */19 flag=InsertInfo();20 if(flag)21 try22 OutputStream outStream=FileStoreActivity.this.openFileOutput(file_name, MODE_PRIVATE);23 FileService.save(outStream, file_content);24 25 catch(Exception e)26 Log.e(TAG, e.toString();27 resId=R.string.error;28 29 Toast.makeText(FileStoreActivity.this, resId, Toast.LENGTH_LONG).show();30 31 32 33 34 );2.读取文件的主要代码读取主代码 1 Button bRead=(Button)findViewById(R.id.read); 2 bRead.setOnClickListener(new View.OnClickListener() 3 4 Override 5 public void onClick(View v) 6 / TODO Auto-generated method stub 7 /此时隐藏了文件内容框和文件内容的label 8 filecontent.setVisibility(View.GONE); 9 TextView content=(TextView)findViewById(R.id.content);10 content.setVisibility(View.GONE);11 InputStream inStream;12 file_name=filename.getText().toString();13 14 /* API15 * FileInputStream openFileInput (String name) 16 * Open a private file associated with this Contexts application package for reading. 17 */18 try 19 inStream = FileStoreActivity.this.openFileInput(file_name);20 String context=FileService.read(inStream).toString();21 Toast.makeText(FileStoreActivity.this, context, Toast.LENGTH_LONG).show();22 catch (Exception e) 23 Log.e(TAG,e.toString();24 resId=R.string.error;25 26 27 );3.关于编者的代码关于编码代码 Button bAbout=(Button)findViewById(R.id.about); bAbout.setOnClickListener(new View.OnClickListener() Override public void onClick(View v) / TODO Auto-generated method stub new AlertDialog.Builder(FileStoreActivity.this).setTitle(编者信息) .setMessage( 编者: naive_monk + n + 爱好:篮球、音乐、交友 + n + QQ:1271522052 + n + 邮箱: + n + 所在城市:广东惠州 + n) .setCancelable(false).setPositiveButton(确定, new DialogInterface.OnClickListener() Override public void onClick( DialogInterface dialog, int id) / TODO Auto-generated method stub dialog.dismiss(); ).setNegativeButton(退出, new DialogInterface.OnClickListener() Override public void onClick( DialogInterface dialog, int id) / TODO Auto-generated method stub dialog.dismiss(); ).show(); );4.业务代码代码 /* * 保存文件 */ public static void save(OutputStream outStream, String content) throws Exception / 写入数据 outStream.write(content.getBytes(); outStream.close(); /* * 读取文件 */ public static String read(InputStream inStream) throws Exception / 字节流 ByteArrayOutputStream outStream = new ByteArrayOutputStream(); byte buffer = new byte1024; int len = -1; /获取字节数据 while (len = inStream.read(buffer) != -1) outStream.write(buffer, 0, len); /得到字节数据 byte data = outStream.toByteArray(); outStream.close(); inStream.close(); return new String(data); 四、小结这个例子只是简单的操作文件的读写,很多地方都不够完善,希望有兴趣的网友们可以互相交流下android中如何判断一个文件是否存在?public boolean fileIsExists() File f=new File(stockDic.dat); if(!f.exists() return false; return true; Android数据存储之文件存储 首先给大家介绍使用文件如何对数据进行存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的。public void save() try FileOutputStream outStream=this.openFileOutput(a.txt,Context.MODE_WORLD_READABLE); outStream.write(text.getText().toString().getBytes(); outStream.close(); Toast.makeText(MyActivity.this,Saved,Toast.LENGTH_LONG).show(); catch (FileNotFoundException e) return; catch (IOException e) return ; openFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它。创建的文件保存在/data/data/files目录,如: /data/data/cn.itcast.action/files/itcast.txt ,通过点击Eclipse菜单“Window”-“Show View”-“Other”,在对话窗口中展开android文件夹,选择下面的File Explorer视图,然后在File Explorer视图中展开/data/data/files目录就可以看到该文件。openFileOutput()方法的第二参数用于指定操作模式,有四种模式,分别为: Context.MODE_PRIVATE = 0Context.MODE_APPEND = 32768Context.MODE_WORLD_READABLE = 1Context.MODE_WORLD_WRITEABLE = 2Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPENDContext.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。如果希望文件被其他应用读和写,可以传入:openFileOutput(itcast.txt, Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);android有一套自己的安全模型,当应用程序(.apk)在安装时系统就会分配给他一个userid,当该应用要去访问其他资源比如文件的时候,就需要userid匹配。默认情况下,任何应用创建的文件,sharedpreferences,数据库都应该是私有的(位于/data/data/files),其他程序无法访问。除非在创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE ,只有这样其他程序才能正确访问。读取文件内容public void load() try FileInputStream inStream=this.openFileInput(a.txt); ByteArrayOutputStream stream=new ByteArrayOutputStream(); byte buffer=new byte1024; int length=-1; while(length=inStream.read(buffer)!=-1) stream.write(buffer,0,length); stream.close(); inStream.close(); text.setText(stream.toString(); Toast.makeText(MyActivity.this,Loaded,Toast.LENGTH_LONG).show(); catch (FileNotFoundException e) e.printStackTrace(); catch (IOException e) return ; 对于私有文件只能被创建该文件的应用访问,如果希望文件能被其他应用读和写,可以在创建文件时,指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。Activity还提供了getCacheDir()和getFilesDir()方法:getCacheDir()方法用于获取/data/data/cache目录getFilesDir()方法用于获取/data/data/files目录把文件放入SD卡使用Activity的openFileOutput()方法保存文件,文件是存放在手机空间上,一般手机的存储空间不是很大,存放些小文件还行,如果要存放像视频这样的大文件,是不可行的。对于像视频这样的大文件,我们可以把它存放在SDCard。 SDCard是干什么的?你可以把它看作是移动硬盘或U盘。在模拟器中使用SDCard,你需要先创建一张SDCard卡(当然不是真的SDCard,只是镜像文件)。创建SDCard可以在Eclipse创建模拟器时随同创建,也可以使用DOS命令进行创建,如下:在Dos窗口中进入android SDK安装路径的tools目录,输入以下命令创建一张容量为2G的SDCard,文件后缀可以随便取,建议使用.img:mksdcard 2048M D:AndroidToolsdcard.img在程序中访问SDCard,你需要申请访问SDCard的权限。在AndroidManifest.xml中加入访问SDCard的权限如下:要往SDCard存放文件,程序必须先判断手机是否装有SDCard,并且可以进行读写。注意:访问SDCard必须在AndroidManifest.xml中加入访问SDCard的权限 if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) File sdCardDir = Environment.getExternalStorageDirectory();/获取SDCard目录 File saveFile = new File(sdCardDir, “a.txt”); FileOutputStream outStream = new FileOutputStream(saveFile); outStream.write(test.getBytes(); outStream.close(); Environment.getExternalStorageState()方法用于获取SDCard的状态,如果手机装有SDCard,并且可以进行读写,那么方法返回的状态等于Environment.MEDIA_MOUNTED。 Environment.getExternalStorageDirectory()方法用于获取SDCard的目录,当然要获取SDCard的目录,你也可以这样写: File sdCardDir = new File(/sdcard); /获取SDCard目录 File saveFile = new File(sdCardDir, itcast.txt); /上面两句代码可以合成一句: File saveFile = new File(/sdcard/a.txt); FileOutputStream outStream = new FileOutputStream(saveFile); outStream.write(test.getBytes(); outStream.close(); Android 文件下载总结1.创建一个HttpURLConnection对象HtttpURLConnection urlConn=(HtttpURLConnection)url.OpenConnection();2.获取一个InputStream对象urlConn.getInputStream();3.网络访问权限Android.permission.INTERNET代码:创建HttpDownLoader 对下载文件进行操作package android.util;import java.io.BufferedReader;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import .HttpURLConnection;import .URL;public class HttpDownLoader private URL url = null;public String downLoad(String urls) StringBuffer sb = new StringBuffer();BufferedReader bf = null;String line = null;try / 创建一个URL对象url = new URL(urls);/ 通过URL对打开连接System.out.println(urls);HttpURLConnection conn = (HttpURLConnection)url.openConnection();/ 通过连接读取数据bf = new BufferedReader(new InputStreamReader(conn.getInputStream();/ 通过bufferedRead对象逐行读取数据while (line = bf.readLine() != null) / 把读到的数据累加起来sb.append(line); catch (Exception ex) ex.printStackTrace();return sb.toString();public int downLoad(String urls, String path, String name) InputStream input = null;try FileUtils fileUtils = new FileUtils();if (fileUtils.isExsistFile(path + name) return 1; else input = getInputStreamFromURL(urls);File file = fileUtils.writer2SDFromInput(path, name, input);if (file = null) return -1; catch (Exception ex) ex.printStackTrace(); return -1;finallytry input.close(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();return 0;public InputStream getInputStreamFromURL(String urls) InputStream inputstream = null;try url = new URL(urls);HttpURLConnection conn = (HttpURLConnection) url.openConnection();inputstream = conn.getInputStream(); catch (Exception e) / TODO Auto-generated catch blocke.printStackTrace();return inputstream;创建一个FileUtils 类对文件在SDCard的操作package android.util;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import android.os.Environment;public class FileUtils private String SDPATH = null;public String getSDPATH() return SDPATH;public void setSDPATH(String sDPATH) SDPATH = sDPATH; /得到存储卡的路劲public FileUtils() SDPATH=Environment.getExternalStorageDirectory()+/;/在sd卡上创建文件public File createFile(String name) throws IOExceptionFile file=new File(SDPATH+name);file.createNewFile();System.out.println(succe);return file;/在sd卡上创建目录public File createSDFile(String name) throws IOExceptionFile file=new File(SDPATH+name);System.out.println(SDPATH+name);file.mkdir();return file;/判断文件是否存在public boolean isExsistFile(String fileName)File file=new File(SDPATH+fileName);return file.exists();/将一个inputStream流数据写入到sd卡中public File writer2SDFromInput(String path ,String filename,InputStream input)File file=null;OutputStream output=null;try/创建文件夹createSDFile(path);/创建文件file=createFile(path+filename);/向文件输入数据output=new FileOutputStream(file) ;byte buffer =new byte4*1024;while(input.read(buffer)!=-1)output.write(buffer);output.flush();catch(Exception ex)ex.printStackTrace();finallytry output.close(); catch (IOException e) e.printStackTrace();return file;创建一个测试类class downLoadFileListener implements OnClickListener Overridepublic void onClick(View v) / TODO Auto-generated method stub/ 读取数据HttpDownLoader load = new HttpDownLoader();/ 调用下载的方法int state = load.downLoad(01:8080/test/images/gege.mp3,voa/,haiyou.mp3);System.out.print(state);在Android平台中经常要用到Txt文本文件的读写操作,Android平台中处理Text这样的文本MIME的文件可以使用Java虚拟机的FileWriter类比较简单方便。该类位于java.io.FileWriter,提供了多种重写方法FileWriter(File file)/创建文件通过File对象FileWriter(File file, boolean append)/如果文件存在,第二个参数设置为false则覆盖,为true则代表追加方式。FileWriter(FileDescriptor fd) /通过FileDescriptor对象来生成文件FileWriter(String filename) /写入文件,参数为完整的路径和文件名FileWriter(String filename, boolean append) /第二个参数通第二种重载方式一样。 因为该类从java.io.OutputStreamWriter继承,具备void close() void flush()

温馨提示

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

评论

0/150

提交评论