疯狂

STANDING ON THE SHOULDERS OF GIANTS
posts - 481, comments - 486, trackbacks - 0, articles - 1
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

android I/o 例子说明

Posted on 2009-11-08 13:43 疯狂 阅读(1561) 评论(4)  编辑  收藏 所属分类: android
     android里面读取文件地方法基本和java中一样,使用流来读取,只是文件的存放有些规定而已。
    android程序是有文件目录为:/data/data/<包名>/files/    例如:final String filename = "data/data/com.iotest/iotest.txt";
  如果有定义错误就会出现错误。
  下面是一个简单的例子说明:
  首先是我们的layout:
main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation
="vertical" android:layout_width="fill_parent"
    android:layout_height
="fill_parent">
    
<Button android:text="write text" android:id="@+id/write"
        android:layout_width
="fill_parent"
        android:layout_height
="wrap_content" 
        
>
    
</Button>
    
<Button android:text="read text" android:id="@+id/read"
        android:layout_width
="fill_parent"
        android:layout_height
="wrap_content" 
        
>
    
</Button>
    
<EditText android:text="text to insert into file.."
        android:id
="@+id/EditText01" android:layout_width="fill_parent"
        android:layout_height
="fill_parent">
    
</EditText>
</LinearLayout>
最后生成的界面为如下:

然后使我们的activity:
package com.iotest;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.http.util.EncodingUtils;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class IoTest extends Activity implements OnClickListener{
    
/** Called when the activity is first created. */
    
final String filename = "data/data/com.iotest/iotest.txt";
    
final String tag="I/O";
    EditText editText;
    Button buttonw;
    Button buttonr;
    
    @Override
    
public void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        editText 
= (EditText)findViewById(R.id.EditText01);
        buttonr 
= (Button)findViewById(R.id.read);
        buttonw 
= (Button)findViewById(R.id.write);
        buttonr.setOnClickListener(
this);
        buttonw.setOnClickListener(
this);
    }
  
    
public void onClick(View v) {
        
        
switch (v.getId()) {
        
        
case R.id.read:
            readTest();
            
break;
        
case R.id.write:
            writeTest();
        
default:
            
break;
        }

        
    }

        
    
public void writeTest(){
        
try{
        File file 
= new File(filename);
        file.createNewFile();
        Log.d(tag, 
"create flie!");
        BufferedOutputStream bufferedOutputStream 
= new BufferedOutputStream(new FileOutputStream(file));
        bufferedOutputStream.write(editText.getText().toString().getBytes());
        bufferedOutputStream.close();
        }
catch (Exception e) {
            Log.e(tag, 
"error in write");
        }

    }

    
public void readTest(){
        
        
try {
            File file 
= new File(filename);
            BufferedInputStream bufferedInputStream 
= new BufferedInputStream(new FileInputStream(file));
            
byte[] data = new byte[(int) file.length()];
            bufferedInputStream.read(data);
            String str 
= EncodingUtils.getString(data, "utf-8");
            bufferedInputStream.close();
            editText.setText(
"读取到的数据:"+str);
        }
 catch (Exception e) {
            
// TODO Auto-generated catch block
            Log.e(tag, "error in read");
        }
        
    }
    
}
也就是要注意下文件的路径。

评论

# re: android I/o 例子说明[未登录]  回复  更多评论   

2010-07-28 16:40 by lu
我想问一下,你的这个例子自己能运行出来吗?我的为什么运行出现错误呢?

# re: android I/o 例子说明  回复  更多评论   

2010-07-29 09:04 by @joe
当然能运行起来,所有的例子都是先运行起来,然后才写的,不过这都是09年的写的文章,现在已经没心事继续研究android了,能什么时候看见android的光明未来时再继续研究。

# re: android I/o 例子说明  回复  更多评论   

2010-07-29 14:48 by luper
谢谢你啦,我运行成功了,不过在途中出现了一点点的错误,这个例子可以用来说明android datastorage 的文件存储的方式吗?

# re: android I/o 例子说明  回复  更多评论   

2010-07-30 09:14 by @joe
可以这么说但不排除其他方法,请继续努力!

只有注册用户登录后才能发表评论。


网站导航: