zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    [转]ARM平台下独占访问指令LDREX和STREX
    ARM MMU
    在字符串中查找子字符串并提取它
    获得字符串的长度
    连接字符串
    循环用于迭代数组中的项目
    循环的标准
    if ... else 语句
    添加一个图像切换器
    css 中的z-index
  • 原文地址:https://www.cnblogs.com/changyinlu/p/4936892.html
Copyright © 2011-2022 走看看