Android的:读文件 [英] Android : Reading File

查看:131
本文介绍了Android的:读文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想获得最后的文件10行,但无法获取。

I am trying to get last 10 rows from file but not able to fetch.

我有两个活动:
第一,我想从一个EditText到一个文件中写入文本。
在第二个活动我尝试读取存储的数据并将其写入到一个TextView

i have two activities: in the first, i want to write text from an EditText to a file. in the second activity i try to read the stored data and write it to a textView

public class Date_Location extends Activity {

ImageView imageView;
EditText editTextDate, editTextLocation, editTextEdit;

private static final String TAG = Date_Location.class.getName();
private static final String FILENAME = "myFile.txt";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.date_location);

    editTextDate = (EditText) findViewById(R.id.editText1);
    editTextLocation = (EditText) findViewById(R.id.editText2);
    editTextEdit = (EditText) findViewById(R.id.editText3);
    imageView = (ImageView) findViewById(R.id.next);
}

public void goNext(View view) {
    String Date = editTextDate.getText().toString();
    String Location = editTextLocation.getText().toString();
    String Comment = editTextEdit.getText().toString();

    writeToFile(Date);
    writeToFile(Location);
    writeToFile(Comment);

    Intent intent = new Intent(this, Detail_Data.class);
    startActivity(intent);
    Date_Location.this.finish();
}

private void writeToFile(String data) {
    String newline = "\r\n";
    try {

        OutputStreamWriter oswName = new OutputStreamWriter(openFileOutput(
                FILENAME, Context.MODE_APPEND));
        oswName.write(newline);
        oswName.write(data);
        oswName.close();
    } catch (IOException e) {
        Log.e(TAG, "File write failed: " + e.toString());
    }
}
}

和我的第二个活动是低于

And my second Activity is below

public class Detail_Data extends Activity {

TextView textView1;
ImageView imageView;
private static final String FILENAME = "myFile.txt";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.detail_data);

    textView1 = (TextView) findViewById(R.id.textView1);
    imageView = (ImageView) findViewById(R.id.imageView2);

    String date = readFromFile();
    textView1.setText(date);

}

private String readFromFile() {
    String ret = "";

    try {
        InputStream inputStream = openFileInput(FILENAME);
        ArrayList<String> bandWidth = new ArrayList<String>();

        if (inputStream != null) {
            InputStreamReader inputStreamReader = new InputStreamReader(
                    inputStream);
            BufferedReader bufferedReader = new BufferedReader(
                    inputStreamReader);
            String receiveString = "";
            StringBuilder stringBuilder = new StringBuilder();

            while ((receiveString = bufferedReader.readLine()) != null) {
                 stringBuilder.append(receiveString+'\n');
                 bandWidth.add(receiveString);
                 if (bandWidth.size() == 10)
                  bandWidth.remove(0);
                }
            ret = stringBuilder.toString();
            inputStream.close();
        }
    } catch (FileNotFoundException e) {
        Log.i("File not found", e.toString());
    } catch (IOException e) {
        Log.i("Can not read file:", e.toString());
    }
    return ret;
}

public void goNext(View view) {
    imageView.setColorFilter(0xFFFF3D60, PorterDuff.Mode.MULTIPLY);

    Intent intent = new Intent(this, Agreement.class);
    startActivity(intent);
    Detail_Data.this.finish();
}
}

请,如果任何人有任何想法,然后帮助我。我曾与其他解决方案尝试过,但随后也我没有得到最后的10条记录。相反,过去10数据我得到所有这是写在文件中的记录。

please if any one have any idea then help me. I have tried with other solution too but then also i am not getting last 10 records. Instead of last 10 data i am getting all the records which is written in file.

推荐答案

首先,如果您是在SD卡写入文件时,请确保您在AndroidManifest.xml中添加使用许可权标签

Firstly, If you are writing file on SDcard, be sure that you have added the uses-permission tag in AndroidManifest.xml

&LT;使用许可权的Andr​​oid:NAME =Android.permission.WRITE_EXTERNAL_STORAG​​E&GT;&LT; /使用许可权&GT;

其次,不要忘记冲水()

Secondly, don't forget flush()

oswName.write(data);
oswName.flush();
oswName.close();

那么,有什么不对您的readFromFile()方法,
从while循环中删除此行

Then, there is something wrong with your readFromFile() method, remove this line from while loop

stringBuilder.append(receiveString+'\n');

和while循环之后添加此项权利

and add this right after the while loop

for(String str : bandWidth)
    stringBuilder.append(str + "\n");

readFromFile()应该像下面

readFromFile() should be like following

private String readFromFile() {
    String ret = "";

    try {
        InputStream inputStream = openFileInput(FILENAME);
        ArrayList<String> bandWidth = new ArrayList<String>();

        if (inputStream != null) {
            InputStreamReader inputStreamReader = new InputStreamReader(
                    inputStream);
            BufferedReader bufferedReader = new BufferedReader(
                    inputStreamReader);
            String receiveString = "";
            StringBuilder stringBuilder = new StringBuilder();

            while ((receiveString = bufferedReader.readLine()) != null) {
                 bandWidth.add(receiveString);
                 if (bandWidth.size() == 10)
                  bandWidth.remove(0);
                }

            for(String str : bandWidth)
                stringBuilder.append(str + "\n");

            ret = stringBuilder.toString();
            inputStream.close();
        }
    } catch (FileNotFoundException e) {
        Log.i("File not found", e.toString());
    } catch (IOException e) {
        Log.i("Can not read file:", e.toString());
    }
    return ret;
}

这篇关于Android的:读文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆