仰天大笑出门去,我辈岂是蓬蒿人。这篇文章主要讲述Android 文件操作相关的知识,希望能为你提供帮助。
http://www.cnblogs.com/LiHuiGe8/p/5604725.html
读取Assets中的文件数据
在asset目录下的资源是无法直接访问的原生资源,但是这个目录保存的文件可以打包在程序里,android应用通过Assetmanager来管理该目录下的原始资源.
Android不为Assets下的文件生成id,如要使用assets里的文件,需要指定文件的路径和文件名。
代码使用示例:
(1)在assets中创建文件:info.txt文件内容为:1,这是使用UTF-8编写的一个文本2,这是第二行代码3,3行4,4行
//读取的内容会随着文件的改变而改变 try { //读取的是字节流 InputStream is=getResources().getAssets().open("info.txt"); //UTF-8编码的指定是很重要的 InputStreamReader isr=new InputStreamReader(is,"UTF-8"); BufferedReader bfr=new BufferedReader(isr); String in=""; while((in=bfr.readLine())!=null) { Log.i(TAG, in); } //Log.i(TAG, bfr.readLine()); } catch (IOException e) { e.printStackTrace(); }
【Android 文件操作】
三、读取raw目录中的文件数据 如果你想要将静态文件保存在您的应用程序在编译时,将文件保存在您的项目res/raw/目录。Android SDK会处理该目录下原始资源,并会在R清单类中为该目录下的资源生成一个索引项。 你可以打开它与openRawResource(),通过R.raw.< filename> 的资源 id。此方法返回的InputStream,您可以使用读取该文件 (但你不能写入原始文件)。
InputStream is=getResources().openRawResource(R.raw.info); InputStreamReader isr=new InputStreamReader(is,"UTF-8"); BufferedReader bfr=new BufferedReader(isr); String instring=""; while((instring=bfr.readLine())!=null) { Log.i(TAG, instring); }
四、读写内部存储的文件数据 程序一旦在虚拟机或真机运行后,程序就会在固定地方创建一个文件夹。 应用程序的数据文件默认位置保存在:/data/data/< package name> /files 目录下。< package name> 代表应用程序的包名。 FileInputStream openFileInput(String name):打开应用程序的数据文件夹下的name文件对应输入流。FileOutputStream openFileOutput(String name,int mode):打开应用程序的数据文件夹下的name文件对应输出流。参数:mode 指定打开文件的模式,该模式支持如下值: MODE_PRIVATE :该文件只能被当前程序读写。 MODE_APPEND:以追加方式打开该文件,应用程序可以向该文件中追加内容。 MODE_WORLD_READABLE:该文件的内容可以被其他应用程序读取。 MODE_WORLD_WRITEABLE:该文件的内容可由其他程序读、写。 getDir(String name,int mode):在应用程序的数据文件夹下获取或创建name对应的子目录。 File getFilesDir():获取该应用程序的数据文件夹的绝对路径。 String[] fileList():返回该应用程序中的数据文件夹下的全部文件。 deleteFile(String):删除该应用程序的数据文件夹下的指定文件。 2,文件的创建、删除、重命名//创建文件的名称public static final String FILE_NAME="myFile.txt"; (1)创建文件代码示例:File file=new File(FileUtil.FILE_NAME); //文件是否存在 if(!file.exists()) { try { //文件不存在,就创建一个新文件 file.createNewFile(); System.out.println("文件已经创建了"); } catch (IOException e) { e.printStackTrace(); } } else { System.out.println("文件已经存在"); System.out.println("文件名:"+file.getName()); System.out.println("文件绝对路径为:"+file.getAbsolutePath()); //是存在工程目录下,所以 System.out.println("文件相对路径为:"+file.getPath()); System.out.println("文件大小为:"+file.length()+"字节"); System.out.println("文件是否可读:"+file.canRead()); System.out.println("文件是否可写:"+file.canWrite()); System.out.println("我呢间是否隐藏:"+file.isHidden()); } (2)删除文件示例:File file=new File(FileUtil.FILE_NAME); //文件是否存在 if(file.exists()) { file.delete(); System.out.println("文件已经被删除了"); } (3)为文件重命名示例:File file=new File(FileUtil.FILE_NAME); File newFile=new File("anotherFile.txt"); file.renameTo(newFile); System.out.println("文件已经成功地被命名了"+file.getName()); 注意:当我们为文件重命名时,仅仅操作的是文件本身,内部的内容不会改变。 2,文件夹的创建和删除//创建文件夹的名称//public static final String FOLDER_NAME="NewFolder"; //多级目录,不能用/ /* * File.separator路径分隔符 * 在文件夹的目录结构中,只要任一级目录不存在,那么都会不存在。 * 比如"NewFolder2"+File.separator+"separator2"此路径,NewFolder2没有存在, * 所以NewFolder2和separator2都不存在 * */ public static final String FOLDER_NAME= "NewFolder"+File.separator+"separator"; (1)创建文件夹代码示例File folder=new File(FileUtil.FOLDER_NAME); if(!folder.exists()) { //创建文件夹,一旦存在相同的文件或文件夹,是不可能存在的。 /* * * 在文件夹的目录结构中,只要任一级目录不存在,那么都会不存在。 * 比如"NewFolder2"+File.separator+"separator2"此路径,NewFolder2没有存在, * 所以NewFolder2和separator2都不存在 * */// folder.mkdir(); /* * 不管路径是否存在,都会慢慢向下一级创建文件夹。 * 所以创建文件夹我们一般用此方法,确定稳定性。 * */ folder.mkdirs(); }File同时可以表示文件或文件夹 (2)删除文件夹 File folder=new File(FileUtil.FOLDER_NAME); if(folder.exists()) { /* * 在移除的时候,只会移除最下层的目录,不会移除多层目录。 * */ folder.delete(); }
推荐阅读
- Android SwipeToDismiss(左滑/右滑删除ListView条目Item)
- Android Locale
- android中使用videoview播放视频
- 如何修复Discord麦克风不工作问题(3种最佳方法)
- 如何修复Chrome在Windows上没有正确关闭()
- 如何在Windows11/10中使用密码保护文件和文件夹()
- 最新必备的12个最佳开源音频编辑器合集
- 如何配置DNS以获得更快的互联网速度()
- 如何简化网站原型设计的5种基本方法合集