15_Android文件读写操作_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > 15_Android文件读写操作

15_Android文件读写操作

 2014/10/31 23:18:50  Yano_nankai  程序员俱乐部  我要评论(0)
  • 摘要:1.文件的基本操作File类的相关技巧和操作:文件的创建、重命名和删除,文件夹的创建和删除等操作。1packagecontrol;23importjava.io.File;45publicclassFileUtil{6publicstaticfinalStringFILE_NAME="myfile.txt";7publicstaticfinalStringFOlDER_NAME="NewFolder"+File.separator+"AnotherNewFolder";89
  • 标签:android 文件 操作

1. 文件的基本操作

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

class="code_img_closed" src="/Upload/Images/2014103123/0015B68B3C38AA5B.gif" alt="" />logs_code_hide('1975c112-627f-4ea0-ac5e-24b91092fe77',event)" src="/Upload/Images/2014103123/2B1B950FA3DF188F.gif" alt="" />
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

 

发表评论
用户名: 匿名