• 15_Android文件读写操作


    1. 文件的基本操作

      File类的相关技巧和操作:文件的创建、重命名和删除,文件夹的创建和删除等操作。

    1 package control;
    2 
    3 import java.io.File;
    4 
    5 public class FileUtil {
    6     public static final String FILE_NAME = "myfile.txt";
    7     public static final String FOlDER_NAME = "NewFolder"+File.separator+"AnotherNewFolder";
    8 
    9 }
    FileUtil
     1 package control;
     2 
     3 import java.io.File;
     4 import java.io.IOException;
     5 
     6 public class CreatFile {
     7     public static void main(String[] args) {
     8         File file = new File(FileUtil.FILE_NAME);
     9         if (!file.exists()) {
    10             try {
    11                 file.createNewFile();
    12                 System.out.println("文件已经创建了");
    13             } catch (IOException e) {
    14                 e.printStackTrace();
    15             }
    16         } else {
    17             System.out.println("文件已经存在!");
    18             System.out.println("文件名为:" + file.getName());
    19             System.out.println("文件的绝对路径为:" + file.getAbsolutePath());
    20             System.out.println("文件的相对路径为:" + file.getPath());
    21 
    22             System.out.println("文件大小为: " + file.length() + "字节");
    23             System.out.println("文件是否可读:" + file.canRead());
    24             System.out.println("文件是否可写:" + file.canWrite());
    25         }
    26     }
    27 
    28 }
    CreatFile
     1 package control;
     2 
     3 import java.io.File;
     4 
     5 public class RenameFile {
     6     public static void main(String[] args) {
     7         File file = new File(FileUtil.FILE_NAME);
     8         File newFile = new File("anotherFile.txt");
     9         file.renameTo(newFile);
    10         System.out.println(newFile);
    11         System.out.println(file.getName());
    12     }
    13 }
    RenameFile
     1 package control;
     2 
     3 import java.io.File;
     4 
     5 public class DeleteFile {
     6     public static void main(String[] args) {
     7         File file = new File(FileUtil.FILE_NAME);
     8         if (file.exists()) {
     9             file.delete();
    10             System.out.println("文件已经被删除了!");
    11         }
    12     }
    13 
    14 }
    DeleteFile
     1 package control;
     2 
     3 import java.io.File;
     4 
     5 public class CreatFolder {
     6 
     7     public static void main(String[] args) {
     8         File folder = new File(FileUtil.FOlDER_NAME);
     9         if (folder.exists() != true) {
    10             folder.mkdirs();
    11         }
    12     }
    13 }
    CreatFolder
     1 package control;
     2 
     3 import java.io.File;
     4 
     5 public class RemoveFolder {
     6     public static void main(String[] args) {
     7         File folder = new File(FileUtil.FOlDER_NAME);
     8         if (folder.exists()) {
     9             folder.delete();
    10         }
    11     }
    12 
    13 }
    RemoveFolder 

    2. 读取Assets中的文件数据

      使用getResources().getAssets().open("filename")获取Assets文件夹中的文件数据流Assets文件夹在根目录下。注意使用UTF-8编码。

    3. 读取raw目录中的文件数据

      getResources().openRawResource(fileid)方法获取raw文件夹中文件的数据流

     1 package com.example.readassets;
     2 
     3 import java.io.BufferedReader;
     4 import java.io.IOException;
     5 import java.io.InputStream;
     6 import java.io.InputStreamReader;
     7 import java.io.UnsupportedEncodingException;
     8 
     9 import android.app.Activity;
    10 import android.content.res.Resources.NotFoundException;
    11 import android.os.Bundle;
    12 import android.util.Log;
    13 import android.view.View;
    14 
    15 public class MainActivity extends Activity {
    16 
    17     private static final String TAG = "ReadAssets";
    18     private static final String TAG_RAW = "RawData";
    19 
    20     @Override
    21     protected void onCreate(Bundle savedInstanceState) {
    22         super.onCreate(savedInstanceState);
    23         setContentView(R.layout.activity_main);
    24 
    25         findViewById(R.id.btnReadTxt).setOnClickListener(
    26                 new View.OnClickListener() {
    27 
    28                     @Override
    29                     public void onClick(View v) {
    30                         try {
    31                             // InputStream返回的是字节流,因此读取文本文件时,要包装成字符流
    32                             InputStream is = getResources().getAssets().open(
    33                                     "info.txt");
    34                             InputStreamReader isr = new InputStreamReader(is,
    35                                     "UTF-8");
    36                             BufferedReader bfr = new BufferedReader(isr);
    37                             String in = "";
    38                             while ((in = bfr.readLine()) != null) {
    39                                 Log.i(TAG, in);
    40                             }
    41                         } catch (IOException e) {
    42                             e.printStackTrace();
    43                         }
    44                     }
    45                 });
    46 
    47         findViewById(R.id.btnReadRaw).setOnClickListener(
    48                 new View.OnClickListener() {
    49 
    50                     @Override
    51                     public void onClick(View v) {
    52                         try {
    53                             InputStream is = getResources().openRawResource(
    54                                     R.raw.info);
    55                             InputStreamReader isr = new InputStreamReader(is,
    56                                     "UTF-8");
    57                             BufferedReader bfr = new BufferedReader(isr);
    58                             String inString = "";
    59                             while ((inString = bfr.readLine()) != null) {
    60                                 Log.i(TAG_RAW, inString);
    61                             }
    62                         } catch (NotFoundException e) {
    63                             // TODO Auto-generated catch block
    64                             e.printStackTrace();
    65                         } catch (UnsupportedEncodingException e) {
    66                             // TODO Auto-generated catch block
    67                             e.printStackTrace();
    68                         } catch (IOException e) {
    69                             // TODO Auto-generated catch block
    70                             e.printStackTrace();
    71                         }
    72 
    73                     }
    74                 });
    75     }
    76 
    77 }
    MainActivity
     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     xmlns:tools="http://schemas.android.com/tools"
     3     android:id="@+id/container"
     4     android:layout_width="match_parent"
     5     android:layout_height="match_parent"
     6     tools:context="com.example.readassets.MainActivity"
     7     android:orientation="vertical"
     8     tools:ignore="MergeRootFrame" >
     9 
    10     <Button
    11         android:id="@+id/btnReadTxt"
    12         android:layout_width="fill_parent"
    13         android:layout_height="wrap_content"
    14         android:text="读取TXT数据" />
    15 
    16     <Button
    17         android:id="@+id/btnReadRaw"
    18         android:layout_width="fill_parent"
    19         android:layout_height="wrap_content"
    20         android:text="读取RAW数据" />
    21 
    22 </LinearLayout>
    activity_main.xml 

    4. 读写内部存储的文件数据

      使用openFileOutput()方法获取内部文件的输出流与文件数据的写入,使用openFileInput()获取内部文件的输入流并将数据读取出来。

     1 package com.example.readwriteexternaldata;
     2 
     3 import java.io.File;
     4 import java.io.FileInputStream;
     5 import java.io.FileNotFoundException;
     6 import java.io.FileOutputStream;
     7 import java.io.IOException;
     8 import java.io.InputStreamReader;
     9 import java.io.OutputStreamWriter;
    10 import java.io.UnsupportedEncodingException;
    11 
    12 import android.app.Activity;
    13 import android.os.Bundle;
    14 import android.os.Environment;
    15 import android.view.View;
    16 import android.widget.EditText;
    17 import android.widget.TextView;
    18 import android.widget.Toast;
    19 
    20 public class MainActivity extends Activity {
    21     
    22     private EditText editText;
    23     private TextView txShow;
    24     File sdcard = Environment.getExternalStorageDirectory();
    25 
    26     @Override
    27     protected void onCreate(Bundle savedInstanceState) {
    28         super.onCreate(savedInstanceState);
    29         setContentView(R.layout.activity_main);
    30         
    31         editText = (EditText) findViewById(R.id.editText);
    32         txShow = (TextView) findViewById(R.id.txShow);
    33         
    34         findViewById(R.id.btnRead).setOnClickListener(new View.OnClickListener() {
    35             
    36             @Override
    37             public void onClick(View v) {
    38                 File myfile = new File(sdcard, "This is my file.txt");
    39                 if (myfile.exists()) {
    40                     FileInputStream fis;
    41                     try {
    42                         fis = new FileInputStream(myfile);
    43                         InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
    44                         char[] input = new char[fis.available()];
    45                         isr.read(input);
    46                         isr.close();
    47                         fis.close();
    48                         String inString = new String(input);
    49                         txShow.setText(inString);
    50                     } catch (FileNotFoundException e) {
    51                         e.printStackTrace();
    52                     } catch (UnsupportedEncodingException e) {
    53                         e.printStackTrace();
    54                     } catch (IOException e) {
    55                         e.printStackTrace();
    56                     }
    57                 }
    58             }
    59         });
    60         
    61         findViewById(R.id.btnWrite).setOnClickListener(new View.OnClickListener() {
    62             
    63             @Override
    64             public void onClick(View v) {
    65                 File myfile = new File(sdcard, "This is my file.txt");
    66                 //如果手机有sd卡,才执行
    67                 if (!sdcard.exists()) {
    68                     Toast.makeText(getApplicationContext(), "当前系统不具备SD卡目录", Toast.LENGTH_LONG).show();
    69                     return;
    70                 }
    71                 try {
    72                     myfile.createNewFile();
    73                     Toast.makeText(getApplicationContext(), "文件创建完成!", Toast.LENGTH_LONG).show();
    74                     FileOutputStream fos = new FileOutputStream(myfile);
    75                     OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
    76                     osw.write(editText.getText().toString());
    77                     osw.flush();
    78                     osw.close();
    79                     fos.close();
    80                     Toast.makeText(getApplicationContext(), "文件写入完成!", Toast.LENGTH_LONG).show();
    81                     
    82                 } catch (IOException e) {
    83                     e.printStackTrace();
    84                 }
    85             }
    86         });
    87 
    88     }
    89 
    90 }
    MainActivity
     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     xmlns:tools="http://schemas.android.com/tools"
     3     android:id="@+id/container"
     4     android:layout_width="match_parent"
     5     android:layout_height="match_parent"
     6     android:orientation="vertical"
     7     tools:context="com.example.readwriteexternaldata.MainActivity"
     8     tools:ignore="MergeRootFrame" >
     9     
    10     <EditText
    11         android:id="@+id/editText"
    12         android:layout_width="fill_parent"
    13         android:layout_height="wrap_content"
    14         android:text="输入要保存的数据"
    15         android:textAppearance="?android:attr/textAppearanceLarge" />
    16 
    17     <Button
    18         android:id="@+id/btnWrite"
    19         android:layout_width="fill_parent"
    20         android:layout_height="wrap_content"
    21         android:text="写入数据" />
    22 
    23     <Button
    24         android:id="@+id/btnRead"
    25         android:layout_width="fill_parent"
    26         android:layout_height="wrap_content"
    27         android:text="读入数据" />
    28 
    29     <TextView
    30         android:id="@+id/txShow"
    31         android:layout_width="fill_parent"
    32         android:layout_height="wrap_content"
    33         android:text="显示读到的数据"
    34         android:textAppearance="?android:attr/textAppearanceLarge" />
    35 
    36 </LinearLayout>
    activity_main.xml 

    5. 读取外部存储的文件数据

      使用Environment.getExternalStorageDirectory()获取系统SD卡路径,并使用File类进行后续的操作。要获得相应的权限。

      点击"写入数据"Button,将上方EditText里面的内容写到文件"This is my file.txt"中;点击"读入数据"Button,将"This is my file.txt"中的内容显示在下面的TextView中。

     

     

     

     

     1 package com.example.readwriteinternaldata;
     2 
     3 import java.io.FileInputStream;
     4 import java.io.FileNotFoundException;
     5 import java.io.FileOutputStream;
     6 import java.io.IOException;
     7 import java.io.InputStreamReader;
     8 import java.io.OutputStreamWriter;
     9 import java.io.UnsupportedEncodingException;
    10 
    11 import android.app.Activity;
    12 import android.content.Context;
    13 import android.os.Bundle;
    14 import android.view.View;
    15 import android.widget.EditText;
    16 import android.widget.TextView;
    17 import android.widget.Toast;
    18 
    19 public class MainActivity extends Activity {
    20     
    21     private String fileName = "test";
    22     
    23     private TextView txShow;
    24     private EditText et;
    25 
    26     @Override
    27     protected void onCreate(Bundle savedInstanceState) {
    28         super.onCreate(savedInstanceState);
    29         setContentView(R.layout.activity_main);
    30         
    31         et = (EditText) findViewById(R.id.et);
    32         txShow = (TextView) findViewById(R.id.txShow);
    33         
    34         findViewById(R.id.btnWrite).setOnClickListener(new View.OnClickListener() {
    35             
    36             @Override
    37             public void onClick(View v) {
    38                 try {
    39                     FileOutputStream fos = openFileOutput(fileName, Context.MODE_PRIVATE);
    40                     OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
    41                     osw.write(et.getText().toString());
    42                     //flush可以保证输出缓冲区的内容
    43                     //注意关闭顺序
    44                     osw.flush();
    45                     fos.flush();
    46                     osw.close();
    47                     fos.close();
    48                     Toast.makeText(getApplicationContext(), "写入完成", Toast.LENGTH_LONG).show();
    49                 } catch (FileNotFoundException e) {
    50                     e.printStackTrace();
    51                 } catch (UnsupportedEncodingException e) {
    52                     // TODO Auto-generated catch block
    53                     e.printStackTrace();
    54                 } catch (IOException e) {
    55                     // TODO Auto-generated catch block
    56                     e.printStackTrace();
    57                 }
    58             }
    59         });
    60         
    61         findViewById(R.id.btnRead).setOnClickListener(new View.OnClickListener() {
    62             
    63             @Override
    64             public void onClick(View v) {
    65                 try {
    66                     FileInputStream fis = openFileInput(fileName);
    67                     InputStreamReader is = new InputStreamReader(fis, "UTF-8");
    68                     char input[] = new char[fis.available()];
    69                     is.read(input);
    70                     is.close();
    71                     fis.close();
    72                     String readed = new String(input);
    73                     txShow.setText(readed);
    74                     
    75                 } catch (FileNotFoundException e) {
    76                     e.printStackTrace();
    77                 } catch (UnsupportedEncodingException e) {
    78                     // TODO Auto-generated catch block
    79                     e.printStackTrace();
    80                 } catch (IOException e) {
    81                     // TODO Auto-generated catch block
    82                     e.printStackTrace();
    83                 }
    84             }
    85         });
    86     }
    87 
    88 }
    MainActivity
     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     xmlns:tools="http://schemas.android.com/tools"
     3     android:id="@+id/container"
     4     android:layout_width="match_parent"
     5     android:layout_height="match_parent"
     6     android:orientation="vertical"
     7     tools:context="com.example.readwriteinternaldata.MainActivity"
     8     tools:ignore="MergeRootFrame" >
     9 
    10     <EditText
    11         android:id="@+id/et"
    12         android:layout_width="fill_parent"
    13         android:layout_height="wrap_content"
    14         android:text="在这里输入内容" />
    15 
    16     <Button
    17         android:id="@+id/btnWrite"
    18         android:layout_width="fill_parent"
    19         android:layout_height="wrap_content"
    20         android:text="保存数据" />
    21 
    22     <Button
    23         android:id="@+id/btnRead"
    24         android:layout_width="fill_parent"
    25         android:layout_height="wrap_content"
    26         android:text="读取数据" />
    27 
    28     <TextView
    29         android:id="@+id/txShow"
    30         android:layout_width="fill_parent"
    31         android:layout_height="wrap_content"
    32         android:textAppearance="?android:attr/textAppearanceLarge" />
    33 
    34 </LinearLayout>
    activity_main.xml
     1 <?xml version="1.0" encoding="utf-8"?>
     2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     3     package="com.example.readwriteinternaldata"
     4     android:versionCode="1"
     5     android:versionName="1.0" >
     6 
     7     <uses-sdk
     8         android:minSdkVersion="14"
     9         android:targetSdkVersion="19" />
    10 
    11     <application
    12         android:allowBackup="true"
    13         android:icon="@drawable/ic_launcher"
    14         android:label="@string/app_name"
    15         android:theme="@style/AppTheme" >
    16         <activity
    17             android:name="com.example.readwriteinternaldata.MainActivity"
    18             android:label="@string/app_name" >
    19             <intent-filter>
    20                 <action android:name="android.intent.action.MAIN" />
    21 
    22                 <category android:name="android.intent.category.LAUNCHER" />
    23             </intent-filter>
    24         </activity>
    25     </application>
    26 
    27 </manifest>
    AndroidManifest.xml

     

  • 相关阅读:
    华硕B360主板装机找不到固态硬盘启动
    Maxwell平滑升级流程
    快速导入Excel数据到mysql
    Docker
    Rest之路
    Rest之路
    Docker -- resolve "join node timeout" error
    (转) Docker
    Docker
    Docker
  • 原文地址:https://www.cnblogs.com/510602159-Yano/p/4065971.html
Copyright © 2020-2023  润新知