android的IO系统

来源:互联网 发布:space域名需要备案吗 编辑:程序博客网 时间:2024/06/10 15:06

        android虽然是由java发展而来的,但是android的IO体系与java的不同,java的IO方法在android里面不管用。android有自己的IO体系。

        注意,android的IO系统与java不一样,android的IO基本都是在ContextWrapper,Context,Environment中。ContextWrapper一般用于操作项目中的资源(特别是文件等)。而Environment一般用于操作手机平台上的资源。Context是ContextWrapper的父类。

        同时还应该注意android的IO中会使用到的路径,android的路径分为两种,项目路径与手机平台资源路径。

        关键一点就是android的文件除assets与res中的之外,其他的文件在编译后都会消失,所以假如我们需要读取文件,则不能将文件放在其他地方。一般放文件的地方有三个选择,assets,res,raw,其中raw文件使我们自行创建的,在根目录下,就是说和assets,res同等级。由于raw不是原先就有的,所以不像assets,res那样,可以使用ContextWrawpper的方法进行读取,getAssets().open(),getDrawable(),getValue()。raw的读取可以使用getResources().openRawResource()。这是读取项目中的文件资源的方法。但是android是手机平台,所以更多的是读取手机上的资源的IO方法更为重要。

        应该说相对于java,android项目下的res,assets,raw文件夹下的文件是只能读不能写的。他们在编译中不会被编译。这里android的IO中的读文件可以分为读取项目文件的资源以及手机上的文件,而写文件就是指写手机上的文件。读取项目上的资源的方法有很多,一般都是被封装在ContextWrapper中,也就是编程中用到的this中,使用它的方法我们就可以读取项目的资源。这里一般使用getAssets(),getDrawable(),getValue()读取项目下得assets文件夹的资源,res文件夹下,drawable文件夹,value文件夹下的资源。同时使用getClassLoader().getReourceAsStream()可以读取src文件夹下的资源。使用getResources()可以得到Resources类,由该类所在包android.content.res.Resources可以知道,Resources类可以用于操作res文件夹下的资源,同时使用openRawResource()可以得到res文件夹下raw文件夹的资源(这里注意,raw文件夹位于res文件夹下)。

        而对于写文件,是相对于手机平台而言的。这里还涉及到手机平台上的文件系统。我们可以使用DDMS以及File Explorer查看手机上的文件结构,这里注意需要先打开DDMS才能在File Explorer中看到文件结构。同时还应注意,读取的文件还分为手机内部的文件结构与SDCard的文件结构。这里可以使用java的IO以及Environment等进行android的IO操作。

        在对android手机文件读写时,有两种重要的方法,openFileInput(),openFIleOutput()与FileInputStream(),FileOutputStream()。读取SDCard上的内容可以使用FilInputStream()与openFileInput(),但是写SDCard上的资源时,可以使用FileOutputStream(),但是不能使用openFileOutput()。读写data/data/项目的文件可以使用openFileInput(),openFileOutput(),这里因为是android的项目文件在手机中的组织形式,所以不可以使用FileInputStream(),FileOutputStream()。这里注意路径分别是data/data/目录上的文件,/mnt/sdcard/目录下的文件(还可以是/sdcard/目录下的文件)。(这里应该说是,FileInputStream(),FileOutputStream()用于读写SDCard的资源,openFileInput(),openFileOutput()用于读写手机中的项目文件,这里本来两种方法是不可互用的,但是openInput()其可以用在读取SDCard的内容)(注意openFileInput(),openFileOutput是在raw中编译的)

        这里还有涉及到手机中的文件组成结构,用DDMS,File Explorer可以看到,(未完成)


(这里需要注意,要写入内容到SD卡需要获得权限,也就是在AndroidManifest.xml中写入,<uses-permission android:name=“android.permission.xxx”>,其实更应该说,要操作手机平台的东西需要获得权限。)



(未完成)

原创粉丝点击