Android文件的读写操作

文件的基本操作:

    创建一个java项目:

        项目中创建一个类:

        public class FileUtil{

            public static final String FILE_NAME = "myfile.txt";

            public static final String FOLDER_NAME = "NewFolder"

                        + File.separator + "Subfolder";

        }

        再创建一个主类:

        public static void main(String[] args){

            createTxt();

        }

        public void createTxt(){

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

            }

        }

        public void deleteFile(){

            File file = new File(FileUtil.FILE_NAME);

            if(file.exists()){               

                    file.delete();

                    System.out.println("文件已经被删除了");

               }

        }

        public void rename(){

            File file = new File(FileUtil.FILE_NAME);

            File newfile = new File("anotherFile.txt");

            file.renameTo(newfile);

             System.out.println("文件已经成功重命名了"+ file.getName()); 

        }

        //文件夹的操作

        public void createFolder(){

            File folder = new File(FileUtil.FOLDER_NAME);

            if(!folder.exists()){

                folder.mkdirs();

            }

        }

        public void removeFolder(){

            File folder = new File(FileUtil.FOLDER_NAME);

            if(folder.exists()){

                folder.delete();//只能移除下一层目录,并且目录是空的

            }

        }

创建Android项目:

       

读取Assets中的文件数据:

activity_main.xml:

    <Button

        android:id="@+id/readtxtBtn"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="读取TXT数据"/>

在Assets文件夹中创建info.txt文件,随便输入几行文本。

MainActivity.java:

    private static final String TAG = "ReadAssets";

    protected void onCreate(Bundle savedInstanceState){

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        findViewById(R.id.readtxtBtn).setOnClickListener(new View.OnClickListener){

            public void onCreate(View arg0){

                try{

                    InputStream is = getResources().getAssets().open("info.txt");

                    InputStreamReader isr = new InputStreamReader(is, "UTF-8");

                    BufferedReader bfr = new BufferedReader(isr);

                    String str = "";

                    while((str = bfr.readLine()) != null){

                        Log.i(TAG, str);

                    }

                }catch(IOException e){

                    e.printStackTrace();

                }

            }

        }

    }

读取raw目录中的文件数据:

    activity_main文件:

        <Button

                android:layout_width="fill_parent"

                android:layout_height="wrap_content"

                android:text="读取RAW文件夹中的数据"

                android:onClick="click"/>

    在res目录中床架一个raw文件夹,并在里面创建一个文件info.txt,并在文件夹中随便输入几行数据

    MainActivity文件中:

        private static final String TAG = "RawData";

        public void click(View v){

            try{

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

                }

            }catch(Exception e){

                e.printStackTrace();

            }

        }

读写内部存储的文件数据:

    内部存储空间在DDMS中的FileExplorer的data/data/files/XXX

    在activity.xml中:

        <EditText

            android:id="@+id/et"

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:hint="在这里输入内容"/>

        <Button

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:text="保存数据"

            android:onClick="clickw"/>

        <Button

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:text="读取数据"

            android:onClick="clickr"/>

        <TextView

            android:id="@+id/show"

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"/>

    MainActivity文件中:

        private EditText et; //在ONCreate方法中声明

        private TextView show;

        private String fileName = "test";

        public void clickw(View view){

            try{

                FileOutputStream fos = openFileOutput(fileName, Context.MODE_PRIVATE);

                OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");

                osw.write(et.getText().toString());

                osw.flush();

                fos.flush();

                osw.close();

                fos.close();

                Toast.makeText(getApplicationContext(), "写入完成", 1).show();

            }catch(Exception e){

                e.printStackTrace();

            }           

        }

       

         public void clickr(View view){

            try{

                FileInputStream fis = openFileInput(fileName);

                InputStreamReader is = new InputStreamReader(fis, "UTF-8");

                char input[] = new char[fis.available()];

                is.read(input);

                is.close();

                fis.close();

                String readed = new String(input);

                show.setText(readed);

            }catch(Exception e){

                e.printStackTrace();

            }           

        }

读取外部存储(SD卡)的文件数据:

外部存储空间在DDMS中的FileExplorer的mnt/sdcard/XXX (真正的SDCARD在:storage/sdcard)

    在activity.xml中:

        <EditText

            android:id="@+id/editText"

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:hint="在这里输入内容"/>

        <Button

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:text="写入数据"

            android:onClick="clickw"/>

        <Button

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:text="读取数据"

            android:onClick="clickr"/>

        <TextView

            android:id="@+id/show"

            android:text="这里显示读到的数据"

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"/>

    MainActivity文件中:

        private EditText editText;//在ONCreate方法中实例化

        private TextView show;

        //写入数据

        public void clickw(View view){           

                File sdcard = Environment.getExternalStorageDirectory();//路径

                File myfile = new File(sdcard, "This is my file.txt");

                if(!sdcard.exists()){

                    Toast.makeText(getApplicationContext(), "当前系统不具备SD卡目录", 1).show();

                    return;

                }

            try{

                myfile.createNewFile();

                Toast.makeText(getApplicationContext(), "文件已创建完成", 1).show();

                FileOutputStream fos = new FileOutputStream(myfile);

                OutputStreamWriter osw = new OutputStreamWriter(fos);

                osw.write(et.getText().toString());

                osw.flush();

                osw.close();

                fos.close();

                Toast.makeText(getApplicationContext(), "文件已写入完成", 1).show();

            }catch(Exception e){

                e.printStackTrace();

            }           

        }

       

        //读取数据

         public void clickr(View view){

            File myfile = new File(sdcard, "This is my file.txt");

            if(myfile.exists()){

                try{

                    FileInputStream fis = new FileInputStream(myfile);

                    InputStreamReader isr = new InputStreamReader(fis, "UTF-8");

                    char[]  input = new char[fis.available()];

                    isr.read(input);

                    isr.close();

                    fis.close();

                    String inString = new String(input);

                    show.setText(inString);

                }catch(Exception e){

                    e.printStackTrace();

                }           

            }           

        }

        在清单文件中添加权限:

        android.permission.WRITE_EXTERNAL_STORAGE

原文地址:https://www.cnblogs.com/changyinlu/p/4936892.html