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

15_Android文件读写操作的更多相关文章

  1. c语言文件读写操作总结

    C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...

  2. [转]Android - 文件读写操作 总结

     转自:http://blog.csdn.net/ztp800201/article/details/7322110 Android - 文件读写操作 总结 分类: Android2012-03-05 ...

  3. PHP文件读写操作之文件写入代码

    在PHP网站开发中,存储数据通常有两种方式,一种以文本文件方式存储,比如txt文件,一种是以数据库方式存储,比如Mysql,相对于数据库存储,文件存储并没有什么优势,但是文件读写操作在基本的PHP开发 ...

  4. Java 字节流实现文件读写操作(InputStream-OutputStream)

    Java 字节流实现文件读写操作(InputStream-OutputStream) 备注:字节流比字符流底层,但是效率底下. 字符流地址:http://pengyan5945.iteye.com/b ...

  5. Java 字符流实现文件读写操作(FileReader-FileWriter)

    Java 字符流实现文件读写操作(FileReader-FileWriter) 备注:字符流效率高,但是没有字节流底层 字节流地址:http://pengyan5945.iteye.com/blog/ ...

  6. python(三)一个文件读写操作的小程序

    我们要实现一个文件读写操作的小程序 首先我们有一个文件 我们要以"============"为界限,每一个角色分割成一个独立的txt文件,按照分割线走的话是分成 xiaoNa_1. ...

  7. 实现动态的XML文件读写操作

    实现动态的XML文件读写操作(依然带干货) 前言 最近由于项目需求,需要读写操作XML文件,并且存储的XML文件格式会随着导入的数据不同而随时改变(当然导入的数据还是有一定约束的),这样我们要预先定义 ...

  8. ios 简单的plist文件读写操作(Document和NSUserDefaults)

    最近遇到ios上文件读写操作的有关知识,记录下来,以便以后查阅,同时分享与大家. 一,简单介绍一下常用的plist文件. 全名是:Property List,属性列表文件,它是一种用来存储串行化后的对 ...

  9. java文件读写操作类

    借鉴了项目以前的文件写入功能,实现了对文件读写操作的封装 仅仅需要在读写方法传入路径即可(可以是绝对或相对路径) 以后使用时,可以在此基础上改进,比如: 写操作: 1,对java GUI中文本框中的内 ...

随机推荐

  1. K8S的Kafka监控(Prometheus+Grafana)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  2. 水题挑战2 :NOIP提高组 2011 聪明的质监员

    小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 \(n\) 个矿石,从\(1\) 到 \(n\) 逐一编号,每个矿石都有自己的重量 \(w_i\) 以及价值 \(v_i\) .检验矿 ...

  3. UVA12558 埃及分数 Egyptian Fractions

    题意描述 题目描述的翻译挺清楚的了. 和原题的区别是多了禁用的分母.(还有毒瘤输入输出) 算法分析 显然这道题没有什么很好的数学方法来解决,所以可以使用搜索. 由于不确定深度,深搜显然无穷无尽. 所以 ...

  4. How to Convert and Import VHD to VMDK (VMWare)

    VHD or Virtual Hard Disk is the disk image format used by Microsoft virtualization software such as ...

  5. Elasticsearch原理解析与性能调优

    基本概念 定义 一个分布式的实时文档存储,每个字段 可以被索引与搜索 一个分布式实时分析搜索引擎 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据 用途 全文检索 结构化搜索 分 ...

  6. 天啦撸!打印日志竟然只晓得 Log4j?

    空了的时候,我都会在群里偷偷摸摸地潜水,对小伙伴们的一举一动.一言一行筛查诊断.一副班主任的即时感,让我感到非常的快乐,略微夹带一丝丝的枯燥. 这不,我在战国时代读者群里发现了这么一串聊天记录: 竟然 ...

  7. 转载:Pycharm的常用快捷键

    一直想着找一下pycharm的快捷键,但是每次都忘记找了,这次刚好碰到一个很全的,就直接借用别人的来当作自己的笔记ba 转载来源:https://www.cnblogs.com/liangmingsh ...

  8. 09线程隔离的g对象

    1,g是global的意思. g对象再一次请求中的所有的代码的地方,都是可以使用的. 同一次请求,那么在这个项目的所有地方都可以用了. from flask import Flask,request, ...

  9. c++实现split

    #include<iostream> #include<vector> #include<algorithm> #include<string> usi ...

  10. Linux mysql 修改密码 三种方式(转载)

    注明:本文为转载,原文地址:https://www.cnblogs.com/chuckjam/archive/2018/08/10/9456255.html 前言 有时我们会忘记Mysql的密码,或者 ...