写文件android,怎么在手机上写文件

Android开发之如何读写文件

【转】

创新互联网站建设公司一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!专注中小微企业官网定制,成都网站设计、做网站,塑造企业网络形象打造互联网企业效应。

首先介绍如何存储数据,显然,要将数据从应用中输出到文件中,必须得到一个输出流outPutStream,然后往输出流中写入数据,在这里Android自带了一个得到应用输出流的方法

FileOutputStream fos =context.openFileOutput(“yuchao.txt”,Context.MODE_PRIVATE);  (1)

其中第一个属性为文件名,第二个属性为读写模式(有关读写模式的说明下面将详细阐述),

然后在文件输出流fos中便可以写入数据

Fos.write(“Hi,”I’m Chao Yu!”.getBytes());

用完文件输出流之后记得关闭

fos.close();

这样,在/data/data/packageName/file目录下就生成了一个文件名为yuchao.txt的文件,文件中的内容为” Hi,I’m Chao Yu!”

有关(1)中读写模式其实就是制定创建文件的权限以及在读写的时候的方式,Android中提供了以下几种读写模式

Context.MODE_PRIVATE    =  0

该模式下创建的文件其他应用无权访问,并且本应用将覆盖原有的内容

Context.MODE_APPEND    =  32768

该模式下创建的文件其他应用无权访问,并且本应用将在原有的内容后面追加内容

Context.MODE_WORLD_READABLE =  1

该模式下创建的文件其他应用有读的权限

Context.MODE_WORLD_WRITEABLE =  2

该模式下创建的文件其他应用有写的权限

如果需要将文件设置为外部应用可以读写,可将读写模式设置为Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE

一般情况下,各个应用维护的数据都在一个特定的文件夹中,即上面所提到的/data/data/packageName/file(存在于手机存储中),但手机内存毕竟有限,所以有些情况下,我们需要往SD卡中写入数据文件,这其实和普通的java web 应用步骤一样,都是先创建特针对特定目录特定文件的输出流,然后往输出流中写数据,这里要注意一个方法,就是获取SD卡根目录的方法,随着Android系统不断升级,SD卡的根目录随时都有可能改变,Android中得到SD卡根目录的方法是

File sdCardDir = Environment.getExternalStorageDirectory();

然后就可以进行下面的步骤

File saveFile = new File(sdCardDir, “yuchao.txt”);

FileOutputStream outStream = new FileOutputStream(saveFile);

outStream.write("Hi,I’m ChaoYu".getBytes());

outStream.close();

值得注意的是,在往SD卡中写数据的时候,健壮的代码必须考虑SD卡不存在或者写保护的情况,故在写入之前,先做判断

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){

……

}

接着,我们来学习下我们的应用程序如何读取文件中的数据,其实就是写的逆向过程

若要读取应用程序默认维护的文件(即/data/data/packageName/file目录下的文件),首先得到文件输入流

FileInputStream istream = this.context.openFileInput(“yuchao.txt”);

然后在内存中开辟一段缓冲区

byte[] buffer = new byte[1024];

然后创建一个字节数组输出流

ByteArrayOutputStream ostream = new ByteArrayOutputStream();

读出来的数据首先放入缓冲区,满了之后再写到字符输出流中

while((len=istream.read(buffer))!=-1){

ostream.write(buffer, 0, len);

}

最后关闭输入流和输出流

istream.close();

ostream.close();

将得到的内容以字符串的形式返回便得到了文件中的内容了,这里的流操作较多,故以一张图片来说明,见图1

return new String(ostream.toByteArray());

从SD卡中读取数据与上述两个步骤类似,故不再赘述,留给读者自己思考

如在开发过程中进行SD卡地读写,切忌忘了加入权限

uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /

uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/

至此,Android系统中有关文件数据的读写介绍完毕。

Android 中的文件读写操作

IO流(操作文件内容): 字节流

参考:

AssetManager

assets 文件夹用于存储应用需要的文件,在安装后可直接从其中读取使用或者写入本地存储中

Android Studio 默认不建立该文件夹,可以手动新建 : app - src - main - assets

或者,右键 main - New - Folder - Assets Folder

AssetManager 对象可以直接访问该文件夹:

获取方法:

使用函数 open 可以打开 assets 文件夹中对象,返回一个 InputStream 对象:

open

获取方法:

android 如何读写文件?

读文件:

1、通过File获取文件

2、打开输入流,读取文件

写文件:

1、创建文件

2、打开输出流,写入文件内容

示例:

读文件:

String content = ""; //文件内容字符串

//通过路径/sdcard/foo.txt打开文件

File file = new File("/sdcard/foo.txt");

try {

InputStream instream = new FileInputStream(file);//读取输入流

InputStreamReader inputreader = new InputStreamReader(instream);//设置流读取方式

BufferedReader buffreader = new BufferedReader(inputreader);

while (( line = buffreader.readLine()) != null) {

content += line + "\n";//读取的文件内容

}

}catch(Exception ex){

}

写文件:

File file = new File("/sdcard/foo.txt");//

if(!file.exists())

file.createNewFile();//如果文件不存在,创建foo.txt

try {

OutputStream outstream = new FileOutputStream(file);//设置输出流

OutputStreamWriter out = new OutputStreamWriter(outstream);//设置内容输出方式

out.write("文字内容");//输出内容到文件中

out.close();

} catch (java.io.IOException e) {

e.printStackTrace();

}

android 读写文件需要哪些权限

!--往sdcard中写入数据的权限 --uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/uses-permission!--在sdcard中创建/删除文件的权限 --uses-permission android:name="android.permission.MOUNT_U

android中的apk必须签名

这种签名不是基于权威证书的,不会决定某个应用允不允许安装,而是一种自签名证书。

重要的是,android系统有的权限是基于签名的。比如:system等级的权限有专门对应的签名,签名不对,权限也就获取不到。默认生成的APK文件是debug签名的。

获取system权限时用到的签名,见:如何使Android应用程序获取系统权限。基于UserID的进程级别的安全机。这种签名不是基于权威证书的,不会决定某个应用允不允许安装,而是一种自签名证书。重要的是,android系统有的权限是基于签名的。

android10删除文件后写文件

android10删除文件后写文件如下

1.将数据存储到文件中(文件默认存储到data/data/包名/files目录下)htmlpublic void save(String inputText) {//inputText为传入的要保存的数据FileOutputStream out = null;BufferedWriter writer = null;try {= openFileOutput("data", Context.MODE_APPEND);//"data"为文件名,第二个参数为文件操做模式:文件已经存在,就往文件里面追加类容,不重新建立文件。

writer = new BufferedWriter(new OutputStreamWriter(out));writer.write(inputText);} catch (IOException e) {e.printStackTrace();} finally {try {if (writer != null) {writer.close();

2.从文件中读取数据android//读取数据= load();if (!TextUtils.isEmpty(inputText1)) {//非空判断,传入为null和空字符串时返回true//将数据展现到listview控件 );//android.R.layout.simple_list_item_1android内置子布adapter.add(inputText1);ListViewBattery5.setAdapter(adapter)。

Android写入txt文件

分以下几个步骤:

首先对manifest注册SD卡读写权限

AndroidManifest.xml 

?xml version="1.0" encoding="utf-8"? 

manifest xmlns:android="

package="com.tes.textsd" 

android:versionCode="1" 

android:versionName="1.0"  

uses-sdk 

android:minSdkVersion="8" 

android:targetSdkVersion="16" / 

uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/ 

application 

android:allowBackup="true" 

android:icon="@drawable/ic_launcher" 

android:label="@string/app_name" 

android:theme="@style/AppTheme"  

activity 

android:name="com.tes.textsd.FileOperateActivity" 

android:label="@string/app_name"  

intent-filter 

action android:name="android.intent.action.MAIN" / 

category android:name="android.intent.category.LAUNCHER" / 

/intent-filter 

/activity 

/application 

/manifest

创建一个对SD卡中文件读写的类

FileHelper.java 

/** 

* @Title: FileHelper.java 

* @Package com.tes.textsd 

* @Description: TODO(用一句话描述该文件做什么) 

* @author Alex.Z 

* @date 2013-2-26 下午5:45:40 

* @version V1.0 

*/ 

package com.tes.textsd; 

import java.io.DataOutputStream; 

import java.io.File; 

import java.io.FileOutputStream; 

import java.io.FileWriter; 

import java.io.FileInputStream; 

import java.io.FileNotFoundException; 

import java.io.IOException; 

import android.content.Context; 

import android.os.Environment; 

public class FileHelper { 

private Context context; 

/** SD卡是否存在**/ 

private boolean hasSD = false; 

/** SD卡的路径**/ 

private String SDPATH; 

/** 当前程序包的路径**/ 

private String FILESPATH; 

public FileHelper(Context context) { 

this.context = context; 

hasSD = Environment.getExternalStorageState().equals( 

android.os.Environment.MEDIA_MOUNTED); 

SDPATH = Environment.getExternalStorageDirectory().getPath(); 

FILESPATH = this.context.getFilesDir().getPath(); 

/** 

* 在SD卡上创建文件 

* @throws IOException 

*/ 

public File createSDFile(String fileName) throws IOException { 

File file = new File(SDPATH + "//" + fileName); 

if (!file.exists()) { 

file.createNewFile(); 

return file; 

/** 

* 删除SD卡上的文件 

* @param fileName 

*/ 

public boolean deleteSDFile(String fileName) { 

File file = new File(SDPATH + "//" + fileName); 

if (file == null || !file.exists() || file.isDirectory()) 

return false; 

return file.delete(); 

/** 

* 写入内容到SD卡中的txt文本中 

* str为内容 

*/ 

public void writeSDFile(String str,String fileName) 

try { 

FileWriter fw = new FileWriter(SDPATH + "//" + fileName); 

File f = new File(SDPATH + "//" + fileName); 

fw.write(str); 

FileOutputStream os = new FileOutputStream(f); 

DataOutputStream out = new DataOutputStream(os); 

out.writeShort(2); 

out.writeUTF(""); 

System.out.println(out); 

fw.flush(); 

fw.close(); 

System.out.println(fw); 

} catch (Exception e) { 

/** 

* 读取SD卡中文本文件 

* @param fileName 

* @return 

*/ 

public String readSDFile(String fileName) { 

StringBuffer sb = new StringBuffer(); 

File file = new File(SDPATH + "//" + fileName); 

try { 

FileInputStream fis = new FileInputStream(file); 

int c; 

while ((c = fis.read()) != -1) { 

sb.append((char) c); 

fis.close(); 

} catch (FileNotFoundException e) { 

e.printStackTrace(); 

} catch (IOException e) { 

e.printStackTrace(); 

return sb.toString(); 

public String getFILESPATH() { 

return FILESPATH; 

public String getSDPATH() { 

return SDPATH; 

public boolean hasSD() { 

return hasSD; 

}

写一个用于检测读写功能的的布局

main.xml 

?xml version="1.0" encoding="utf-8"? 

LinearLayout xmlns:android="

android:layout_width="fill_parent" 

android:layout_height="fill_parent" 

android:orientation="vertical"  

TextView 

android:id="@+id/hasSDTextView" 

android:layout_width="fill_parent" 

android:layout_height="wrap_content" 

android:text="hello" / 

TextView 

android:id="@+id/SDPathTextView" 

android:layout_width="fill_parent" 

android:layout_height="wrap_content" 

android:text="hello" / 

TextView 

android:id="@+id/FILESpathTextView" 

android:layout_width="fill_parent" 

android:layout_height="wrap_content" 

android:text="hello" / 

TextView 

android:id="@+id/createFileTextView" 

android:layout_width="fill_parent" 

android:layout_height="wrap_content" 

android:text="false" / 

TextView 

android:id="@+id/readFileTextView" 

android:layout_width="fill_parent" 

android:layout_height="wrap_content" 

android:text="false" / 

TextView 

android:id="@+id/deleteFileTextView" 

android:layout_width="fill_parent" 

android:layout_height="wrap_content" 

android:text="false" / 

/LinearLayout

就是UI的类了

FileOperateActivity.class 

/** 

* @Title: FileOperateActivity.java 

* @Package com.tes.textsd 

* @Description: TODO(用一句话描述该文件做什么) 

* @author Alex.Z 

* @date 2013-2-26 下午5:47:28 

* @version V1.0 

*/ 

package com.tes.textsd; 

import java.io.IOException; 

import android.app.Activity; 

import android.os.Bundle; 

import android.widget.TextView; 

public class FileOperateActivity extends Activity { 

private TextView hasSDTextView; 

private TextView SDPathTextView; 

private TextView FILESpathTextView; 

private TextView createFileTextView; 

private TextView readFileTextView; 

private TextView deleteFileTextView; 

private FileHelper helper; 

@Override 

public void onCreate(Bundle savedInstanceState) { 

super.onCreate(savedInstanceState); 

setContentView(R.layout.main); 

hasSDTextView = (TextView) findViewById(R.id.hasSDTextView); 

SDPathTextView = (TextView) findViewById(R.id.SDPathTextView); 

FILESpathTextView = (TextView) findViewById(R.id.FILESpathTextView); 

createFileTextView = (TextView) findViewById(R.id.createFileTextView); 

readFileTextView = (TextView) findViewById(R.id.readFileTextView); 

deleteFileTextView = (TextView) findViewById(R.id.deleteFileTextView); 

helper = new FileHelper(getApplicationContext()); 

hasSDTextView.setText("SD卡是否存在:" + helper.hasSD()); 

SDPathTextView.setText("SD卡路径:" + helper.getSDPATH()); 

FILESpathTextView.setText("包路径:" + helper.getFILESPATH()); 

try { 

createFileTextView.setText("创建文件:" 

+ helper.createSDFile("test.txt").getAbsolutePath()); 

} catch (IOException e) { 

e.printStackTrace(); 

deleteFileTextView.setText("删除文件是否成功:" 

+ helper.deleteSDFile("xx.txt")); 

helper.writeSDFile("1213212", "test.txt"); 

readFileTextView.setText("读取文件:" + helper.readSDFile("test.txt")); 

}


网站栏目:写文件android,怎么在手机上写文件
文章起源:http://scyanting.com/article/phjjdh.html