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(); }

 

三、读取
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();

        }
 
 

相关文章