精华内容
下载资源
问答
  • 主要为大家详细介绍了android开发实现文件读写,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要介绍了Android开发实现读取Assets下文件文件写入存储卡的方法,涉及Android文件与目录的读取、写入、转换等相关操作技巧,需要的朋友可以参考下
  • 一、基本概念 在Android应用中保存文件,保存的位置有两处 ①手机自带的存储空间,较小(如200M),适合保存一些小文件Android中保存位置在data/data/应用包名/files目录 ②外存储设备如SD卡,较大,适合保存大文件...
  • Android 文件读写操作方法总结 在Android中的文件放在不同位置,它们的读取方式也有一些不同。 本文对android中对资源文件读取、数据区文件读取、SD卡文件读取及RandomAccessFile的方式和方法进行了整理。供...
  • 读写Json文件也是常用的操作。 这次来实践一下Json文件读写。 首先在SD卡上的读写权限是一定要申请的。那么还是老办法,在 AndroidManifest.xml 文件中添加 <uses android:name=”android.permission.WRITE_...
  • 本篇文章主要介绍了Android实现文件存储的示例代码,文件内容可以分别存储在手机内存和外存中,并且都可以读去取出来,有兴趣的可以了解一下。
  • 本文实例讲述了Android开发实现读取assets目录下db文件的方法。分享给大家供大家参考,具体如下: 最近准备打算写一个关于天气预报的app,偶然的机会在一大神的博客上看到了一个获取天气的api,获取天气是通过城市的...
  • 主要介绍了Android 读取文件内容实现方法的相关资料,这里提供了几种方法,大家可以选择使用,需要的朋友可以参考下
  • android文件读写权限

    2013-11-04 14:57:09
    android开发中,我们经常用到文件读写权限
  • CSV 文件是Excel 的标准文件格式,在开发过程中经常需要格式化输出数据。CSV 的格式非常简单,都是一行一行存储的,同一...下面这篇文章主要给大家介绍了关于Android如何读写CSV文件的相关资料,需要的朋友可以参考下。
  • 安卓开发-文件读写权限

    千次阅读 2017-10-24 22:00:28
    安卓开发-文件读写权限 安卓规定app创建的私有文件只有该app可以读写;想要使其他app也可以读写文件就需要创建公有文件,请看下面两个例子:

    安卓开发-文件读写权限


    安卓规定app创建的私有文件只有该app可以读写;想要使其他app也可以读写的文件就需要创建公有文件,请看下面两个例子:

    !注:Context.MODE_WORLD_WRITEABLE和Context.MODE_WORLD_READABLE这种写法已经被遗弃了,不推荐使用此写法,后面对此有专门的篇章讲解

    app1:创建一个私有文件private.txt和一个公有文件public.txt

    public void saveprivate(View view){//写入私有文件private.txt
        try {
            File file=new File(this.getFilesDir(),"private.txt");//创建文件保存路径
            FileOutputStream fos= new FileOutputStream(file);//创建输出流
            fos.write("这是写入的私有数据".getBytes());//输出流写入新的数据
            fos.close();//关闭输出流
            Toast.makeText(this,"写入成功",Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(this,"写入失败",Toast.LENGTH_SHORT).show();
        }
    
    }
    public void savepublic(View view){//写入公有文件public
        try {
            FileOutputStream fos=openFileOutput("public.txt", Context.MODE_WORLD_WRITEABLE+Context.MODE_WORLD_READABLE);//创建可读可写的文件
            fos.write("这是写入的公有数据".getBytes());//输出流写入新的数据
            fos.close();//关闭输出流
            Toast.makeText(this,"写入成功",Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(this,"写入失败",Toast.LENGTH_SHORT).show();
        }
    }
    

    app2:分别读取app1的私有文件和公有文件

    public void readpublic(View view){//读取公有文件public
        try {
            File file=new File("/data/data/com.example.administrator.filerandw/files/public.txt");//此文件夹为app1之前创建的私有文件
            FileInputStream fis=new FileInputStream(file);
            BufferedReader br=new BufferedReader(new InputStreamReader(fis));
            String s=br.readLine();
            Toast.makeText(this,s,Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(this,"读取失败",Toast.LENGTH_SHORT).show();
        }
    }
    public void readprivate(View view){//读取私有文件public
        try {
            File file=new File("/data/data/com.example.administrator.filerandw/files/private.txt");
            FileInputStream fis=new FileInputStream(file);
            BufferedReader br=new BufferedReader(new InputStreamReader(fis));
            String s=br.readLine();
            Toast.makeText(this,s,Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(this,"读取失败",Toast.LENGTH_SHORT).show();
        }
    }
    

    关于文件权限问题

    在DDMS中查看文件或者在adb shell中使用ll查看文件时,会出现下图的现象,在permissions这里一列会有类似-rw-rw-r的写法:

    例如:drwxr-x–x其中d表示这是一个文件夹(directory),w表示写(write),r表示读(read),x表示执行(execute),格式的权限分给了三组不同的用户群,分别是所有者,组,其他用户,所有者一般权限最高,具有wrx三个权限,到其他用户权限依次减小。

    在adb shell中使用chmod 777 private.txt命令修改private的权限,chmod为change modify的简写,777为rwx的十六进制的写法:

    0表示没有此权限,1表示有此权限

    例如-rw-rw-rw-使用二进制写法为110 110 110,第一个“-”不参与,因为第一“-”表示是否是文件夹的意思110 110 110转化成十六进制为666,意思是其他用户以上级别的用户群都具有可读可写的权限,如果要更改一个文件的权限为可读可写,使用命令chmod 666 <文件名>即可

    展开全文
  • 1、布局文件:输入框、按钮和文本xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent" >android:id="@+id/ed_text"android:layout_width=...

    1、布局文件:输入框、按钮和文本

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent" >

    android:id="@+id/ed_text"

    android:layout_width="match_parent"

    android:layout_height="300dp"

    android:layout_alignParentLeft="true"

    android:layout_alignParentTop="true"

    android:ems="10" >

    android:id="@+id/write"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_below="@+id/ed_text"

    android:layout_centerHorizontal="true"

    android:text="写入并读取" />

    android:id="@+id/txt_view"

    android:layout_width="match_parent"

    android:layout_height="200dp"

    android:layout_alignParentLeft="true"

    android:layout_below="@+id/write"

    android:text="TextView" />

    2、使用代码实现在输入框中输入文字,点击按钮将输入框中的文字写入本地文件后,再读取该文件并将内容显示在文本上。

    import java.io.ByteArrayOutputStream;

    import java.io.FileInputStream;

    import java.io.FileNotFoundException;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import android.annotation.SuppressLint;

    import android.app.Activity;

    import android.os.Bundle;

    import android.view.View;

    import android.view.View.OnClickListener;

    import android.widget.Button;

    import android.widget.EditText;

    import android.widget.TextView;

    public class MainActivity extends Activity {

    private EditText edit;

    private Button button;

    private TextView textView;

    @SuppressLint("SdCardPath")

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    edit= (EditText) findViewById(R.id.ed_text);

    button = (Button) findViewById(R.id.write);

    textView = (TextView) findViewById(R.id.txt_view);

    button.setOnClickListener(new OnClickListener(){

    @Override

    public void onClick(View arg0) {

    // TODO Auto-generated method stub

    WriteFiles(edit.getText().toString());

    textView.setText(ReadFiles());

    }

    });

    }

    //保存文件内容

    public void WriteFiles(String content){

    try {

    //文件不存在是自动创建,默认写入/deta/data//files下

    FileOutputStream fos = openFileOutput("a.txt", MODE_PRIVATE);

    fos.write(content.getBytes());

    fos.close();

    } catch (FileNotFoundException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }

    //读取文件内容

    public String ReadFiles(){

    String content = null;

    try {

    FileInputStream fis = openFileInput("a.txt");

    ByteArrayOutputStream baos = new ByteArrayOutputStream();

    //每次读取1024字节

    byte[] buffer = new byte[1024];

    int len = 0;

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

    //每次写一个buffer,并且从0开始,全部写出去

    baos.write(buffer, 0, len);

    }

    content = baos.toString();

    fis.close();

    baos.close();

    } catch (FileNotFoundException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    return content;

    }

    }需要权限:

    源码下载

    展开全文
  • 今天小编就为大家分享一篇android 识别U盘以及读写文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 本项目运行环境为Android studio,Excel文件名为codedemo.xls,放置于手机根目录下
  • 在这里,介绍如何读取xml文件。xml文件内容如下:¥35.00¥66.00¥1.00¥1.50根据xml文件,接下来定义一个Book类,有id, title, price三个属性。然后使用一个子线程,通过AssetManager读取到数据流,再使用...

    在这里,介绍如何读取xml文件。

    xml文件内容如下:

    ¥35.00

    ¥66.00

    ¥1.00

    ¥1.50

    根据xml文件,接下来定义一个Book类,有id, title, price三个属性。

    然后使用一个子线程,通过AssetManager读取到数据流,再使用XmlPullParser解析xml文件。

    完整示例代码如下:

    package com.li.readassetfile;

    import java.io.IOException;

    import java.io.InputStream;

    import java.util.ArrayList;

    import java.util.List;

    import org.xmlpull.v1.XmlPullParser;

    import org.xmlpull.v1.XmlPullParserException;

    import android.app.Activity;

    import android.content.res.AssetManager;

    import android.content.res.XmlResourceParser;

    import android.os.Bundle;

    import android.os.Handler;

    import android.util.Xml;

    import android.widget.TextView;

    public class ReadXmlActivity extends Activity {

    private TextView tvContent;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_read_xml);

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

    new Handler().post(new Runnable() {

    @Override

    public void run() {

    AssetManager manager = getResources().getAssets();

    List books = null;

    Book book = null;

    try {

    InputStream inputStream = manager.open("book.xml");

    XmlPullParser parser = Xml.newPullParser();

    parser.setInput(inputStream, "UTF-8");

    StringBuilder sb = new StringBuilder();

    try {

    while(parser.getEventType() != XmlPullParser.END_DOCUMENT){

    if(parser.getEventType() == XmlPullParser.START_DOCUMENT){

    books = new ArrayList();

    }else if(parser.getEventType() == XmlPullParser.START_TAG){

    if("book".equals(parser.getName())){

    book = new Book();

    book.setId(parser.getAttributeValue(0));

    }

    if(book!=null){

    if("title".equals(parser.getName())){//判断开始标签元素是否是name

    book.setTitle(parser.nextText());

    }else if("price".equals(parser.getName())){//判断开始标签元素是否是price

    book.setPrice(parser.nextText());

    }

    }

    }else if(parser.getEventType() == XmlPullParser.END_TAG){

    if("book".equals(parser.getName())){//判断结束标签元素是否是book

    books.add(book);//将book添加到books集合

    book = null;

    }

    }

    parser.next();

    }

    if(books != null && books.size() > 0){

    for(int i = 0; i 

    sb.append(books.get(i).getId() + "\b\b");

    sb.append(books.get(i).getTitle() + "\b\b");

    sb.append(books.get(i).getPrice() + "\b\b");

    sb.append("\n");

    }

    }

    inputStream.close();

    tvContent.setText(sb.toString());

    } catch (XmlPullParserException e) {

    e.printStackTrace();

    }} catch (IOException | XmlPullParserException e) {

    e.printStackTrace();

    }

    }

    });

    }

    private class Book{

    private String id;

    private String title;

    private String price;

    public String getId() {

    return id;

    }public void setId(String id) {

    this.id = id;

    }

    public String getTitle() {

    return title;

    }

    public void setTitle(String title) {

    this.title = title;

    }

    public String getPrice() {

    return price;

    }

    public void setPrice(String price) {

    this.price = price;

    }

    }

    }

    使用完,要注意关闭数据流。为了防止ANR,所以这里使用子线程来读取xml文件。

    本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

    展开全文
  • 代码如下:// 读取assets文件private void assetsRead(){String fileName = “my_assets.txt”;// assets下文件//String fileName = “test/my_assets_test.txt”;// assets下子目录文件String ret = “”;try {...
  • android 通过Environment环境 获取手机根目录 读写 文件操作。
  • Android 文件读写操作

    2015-03-24 16:03:16
    Android - 文件读写操作 方法总结
  • android文件操作——读取assets和raw文件下的内容 1.分别创建assets文件夹和res/raw文件夹:(要注意的raw文件是在res下new,然后创建一个名字为raw的文件夹)   2.创建两个txt文件,复制到asset和raw文件夹中:...
  • 安卓文件读写-流操作

    千次阅读 2019-06-27 16:12:35
    字节流在操作文件时,即使不关闭资源(close方法),文件也能输出,但是如果字符流不使用close方法的话,则不会输出任何内容,说明字符流用的是缓冲区,并且可以使用flush方法强制进行刷新缓冲区,这时才能在不...

    字节流与字符流的区别

    字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,所以InputStream需要提前设置缓存区大小,而字符流在操作的时候是使用到缓冲区的。

    字节流在操作文件时,即使不关闭资源(close方法),文件也能输出,但是如果字符流不使用close方法的话,则不会输出任何内容,说明字符流用的是缓冲区,并且可以使用flush方法强制进行刷新缓冲区,这时才能在不close的情况下输出内容

    那开发中究竟用字节流好还是用字符流好呢?

    在所有的硬盘上保存文件或进行传输的时候都是以字节的方法进行的,包括图片也是按字节完成,而字符是只有在内存中才会形成的,所以使用字节的操作是最多的。

    Java IO

    Java IO中用于读写文件的四个抽象类:Reader,Writer,InputStream,OutputStream。
    根据流所处理的数据类型分为两类:
    (1)字节流:用于处理字节数据。(InputStream,OutputStream)
    (2)字符流:用于处理字符数据,Unicode字符数据。(Reader,Writer)
    读写文件只要选一种实现这四个抽象类的实现类操作即可:

    在Java中IO操作也是有相应步骤的,以文件操作为例,主要的操作流程如下:

    • 使用File类打开一个文件
    • 通过字节流或字符流的子类,指定输出的位置
    • 进行读/写操作
    • 关闭输入/输出

    IO操作属于资源操作,一定要记得关闭

    字节流

    InputStream : 是所有字节输入流的父类,一般使用它的子类FileInputStream等,它能输入字节流;

    OutputStream : 是所有字节输出流的父类,一般使用它的子类FileOutputStream等,它能输出字节流;

    FileInputStream:文件输入流,用于从文件读取数据,它的对象可以用关键字 new 来创建,它有多种构造方法可用来创建对象。
    可以使用字符串类型的文件名来创建一个输入流对象来读取文件:

    InputStream f = new FileInputStream("/data/data/包名/file/hello.text");
    

    也可以使用一个文件对象来创建一个输入流对象来读取文件。我们首先得使用 File() 方法来创建一个文件对象:

    File f = new File("/data/data/包名/file/hello.text");
    InputStream out = new FileInputStream(f);
    

    FileOutPutStream:文件输出流,用于向文件写入数据,如果该流在打开文件进行输出前,目标文件不存在,该流不会创建该文件,并抛出FileNotFindException,有两个构造方法可以用来创建 FileOutputStream 对象。
    使用字符串类型的文件名来创建一个输出流对象:

    OutputStream f = new FileOutputStream("/data/data/包名/file/hello.text")
    

    也可以使用一个文件对象来创建一个输出流来写文件。我们首先得使用File()方法来创建一个文件对象:

    File f = new File("/data/data/包名/file/hello.text");
    OutputStream f = new FileOutputStream(f);
    

    输入流读数据

    • read()
      从输入流中读取数据的下一个字节,返回0到255范围内的int字节值。如果因为已经到达流末尾而没有可用的字节,则返回-1。在输入数据可用、检测到流末尾或者抛出异常前,此方法一直阻塞。因为每次只能读一个字节,所以速度很慢。

    • read(byte[] b)
      从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。以整数形式返回实际读取的字节数。在输入数据可用、检测到文件末尾或者抛出异常前,此方法一直阻塞。如果 b 的长度为 0,则不读取任何字节并返回 0;否则,尝试读取至少一个字节。如果因为流位于文件末尾而没有可用的字节,则返回值 -1;否则,至少读取一个字节并将其存储在 b 中。将读取的第一个字节存储在元素 b[0] 中,下一个存储在 b[1] 中,依次类推。读取的字节数最多等于 b 的长度。设 k 为实际读取的字节数;这些字节将存储在 b[0] 到 b[k-1] 的元素中,不影响 b[k] 到 b[b.length-1] 的元素。

    输出流写数据

    • write(byte b)
      与输出流的read()对应,写入单个字节

    • write(byte[] b,int off,int len)
      将byte数组从off位到len位索引的数据写入

    //将输入流每次读1024个字节读出,缓存到buf中,length是实际读的字节数,然后将buf写入到输出流
    int length = -1;
    byte[] buf = new byte[1024];
    while ((length = in.read(buf)) != -1) {
              out.write(buf, 0, length);
    }
    

    字符流

    Reader : 所有字符输入流的父类,它以字符流的形式输入

    Writer : 所有字符输出流的父类,它以字符流的形式输出

    FileReader:用来读取字符文件的便捷类

    InputStreamReader:InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。

    BufferedReader:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。

    FileWriter:用来写入字符文件的便捷类

    OutputStreamWriter:OutputStreamWriter是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。

    BufferedWriter:从字符输出流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效写入。

    输入流读数据

    读取单个字符,公有方法

    int read() 
    

    将字符读入数组的某一部分,InputStreamReader和BufferedReader有

    int read(char[] cbuf, int off, int len) 
    

    读取一个文本行,只有BufferedWriter有

    String readLine() 
    

    使用时可以先用FileWriter或InputStreamReader获得字符流,再用BufferedReader封装后每行读取:

    ********************FileWriter******************************************
    FileReader r = new FileReader(file);
    BufferedReader br = new BufferedReader(r);
    //由于每次只能读一行,就让其不断地读
    StringBuffer msg = new StringBuffer();
    String s;
    while ((s = br.readLine()) != null) {
        msg = msg.append(s+“\n”); //必须要加\n 否则全部数据变成一行
    }
    //别忘了释放资源
    r.close;
    br.close;
    
    ********************InputStreamReader***********************************
    InputStreamReader isr = new InputStreamReader(is, "UTF-8");//指定编码格式
    BufferedReader bfr = new BufferedReader(isr);
    String in = "";
    while ((in = bfr.readLine()) != null) {
              Log.i(TAG, in);
    }
    //别忘了释放资源
    bfr.close();
    isr.close();
    

    输出流写数据

    写入单个字符

    write(int c):
    

    写入字符串的某一部分

    write(String str, int off, int len)
    

    刷新此输出流,并强制将所有已缓冲的输出字节写入该流中

    flush()
    

    关闭此流,但要先刷新它。在关闭该流之后,再调用 write() 或 flush() 将导致抛出 IOException。关闭以前关闭的流无效

    close()
    

    FileWriter和BufferedWriter配合写入

    BufferedWriter bw=null;
    try {
        bw=new BufferedWriter(new FileWriter("1.txt"));
        bw.newLine();//自有换行符
        bw.append('3');
        bw.write("hello");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally{
        try {
            bw.flush();
            //使用BufferedWriter一定要在关闭前刷新
            bw.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    

     

    展开全文
  • 代码简单,逻辑清晰,即学即用
  • 主要介绍了Android编程中File文件常见存储与读取操作,结合实例形式分析了Android针对文件的打开、读写及布局等相关操作技巧,需要的朋友可以参考下
  • android 读写文件需要哪些权限偏见让我无法去爱别人,傲慢让别人无法来爱我。Android 根目录下读写.txt文件这种黄昏特别难受,下了一整天的雨,阴冷,潮湿,走廊狭长发黑,你知道自己哪都去不了。不要sd卡 不要...
  • Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.java里面自动生成该资源文件的ID,所以访问这种资源文件比较简单,通过R.XXX.ID即可; 第二种是assets目录下...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 117,490
精华内容 46,996
关键字:

安卓开发文件读取