这是" text.txt"文件存储?如何更改文件保存位置并查看内容?

时间:2015-04-16 16:59:16

标签: java android filepath

我按照教程创建了这段代码,在搜索并搜索“text.txt”文件后,我无法在任何地方找到它!我错过了什么吗?如何更改文件的存储位置?

这是activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    <EditText
      android:id="@+id/msg"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="20dp"
      android:ems="10"
     android:hint="Enter a message"
      >
      <requestFocus />
    </EditText>
    <Button
      android:id="@+id/LOAD"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignLeft="@+id/SAVE"
      android:layout_below="@+id/SAVE"
      android:layout_marginTop="46dp"
      android:text="LOAD DATA" />
    <Button
      android:id="@+id/SAVE"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_below="@+id/msg"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="23dp"
      android:text="SAVE DATA" />
  </RelativeLayout>

这是MainActivity.java

package com.example.conor.filedemo;
      import java.io.BufferedReader;
      import java.io.FileInputStream;
      import java.io.FileNotFoundException;
      import java.io.FileOutputStream;
      import java.io.FileReader;
      import java.io.IOException;
      import java.io.InputStreamReader;
      import java.io.OutputStreamWriter;
      import java.util.ArrayList;
      import java.util.List;
      import java.io.*;
      import java.util.*;

      import android.app.Activity;
      import android.os.Bundle;
      import android.view.Menu;
      import android.view.View;
      import android.view.View.OnClickListener;
      import android.widget.Button;
      import android.widget.EditText;
      import android.widget.Toast;




public class MainActivity extends Activity {
       Button save,load;
       EditText message;
       String Message;
       int data_block = 100;



       @Override
       protected void onCreate(Bundle savedInstanceState) {

                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                save=(Button) findViewById(R.id.SAVE);
                load = (Button) findViewById(R.id.LOAD);
                message = (EditText) findViewById(R.id.msg);
                save.setOnClickListener(new OnClickListener() {
                         @Override
                         public void onClick(View v) {

                                  // TODO Auto-generated method stub
                                  Message = message.getText().toString();
                                  try {
                                           FileOutputStream fou = openFileOutput("text.txt", MODE_WORLD_READABLE);
                                           OutputStreamWriter osw = new OutputStreamWriter(fou);
                                           try {
                                                    osw.write(Message);
                                                    osw.flush();
                                                    osw.close();
                                                    Toast.makeText(getBaseContext(), "Data saved", Toast.LENGTH_LONG).show();
                                               } catch (IOException e) {
                                                    // TODO Auto-generated catch block
                                                    e.printStackTrace();
                                              }
                                      } catch (FileNotFoundException e) {
                                           // TODO Auto-generated catch block
                                           e.printStackTrace();
                                      }
                             }
                    });
                load.setOnClickListener(new OnClickListener() {
                         @Override
                         public void onClick(View v) {
                                  // TODO Auto-generated method stub
                             try {
                                      FileInputStream fis = openFileInput("text.txt");
                                      InputStreamReader isr = new InputStreamReader(fis);
                                      char[] data = new char[data_block];
                                      String final_data="";
                                      int size;
                                      try {
                                               while((size = isr.read(data))>0)
                                                  {
                                                   String read_data = String.copyValueOf(data, 0, size);
                                                   final_data+= read_data;
                                                   data = new char[data_block];
                                                   }
                                               Toast.makeText(getBaseContext(), "Message :"+final_data, Toast.LENGTH_LONG).show();
                                          } catch (IOException e) {
                                               // TODO Auto-generated catch block
                                               e.printStackTrace();
                                          }
                                 } catch (FileNotFoundException e) {
                                      // TODO Auto-generated catch block
                                      e.printStackTrace();
                                 }
                             }
                    });
           }
       //@Override
       //public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
       //         getMenuInflater().inflate(R.menu.main, menu);
        //        return true;
        //   }
  }

2 个答案:

答案 0 :(得分:0)

以下几行从字节流生成名为text.txt的输出文件。

FileOutputStream fou = openFileOutput("text.txt", MODE_WORLD_READABLE);
OutputStreamWriter osw = new OutputStreamWriter(fou);

您只需更改文件保存位置的名称或目录即可。有关如何根据自己的喜好更改目录的信息,请参阅OutputStreamWriter

但是,请务必同时更改输入流:

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

我建议使用文件名创建一个File对象,以避免任何错误。

File f = new File("text.txt")

答案 1 :(得分:0)

哎呀我的前几个回答都不正确。执行以下操作在应用程序目录中创建文件。

String homeDirName = Environment.getExternalStorageDirectory().getAbsolutePath() +
                        "/" + getPackageName();
File homeDir = new File(homeDirName);
if (!homeDir.exists())
    homeDir.mkdirs();
File file = new File(homeDir, "text.txt");
FileOutputStream fou = new FileOutputStream(file);

您需要将以下权限行添加到AndroidManifest.xml

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

在您的Android设备上,查找常见目录,例如&#39; DCIM&#39;,&#39;下载&#39;警报&#39;等等。您的应用程序目录将位于该目录中并将是您使用的包名称。要查找您的包名称,请在您的AndroidManifest.xml文件中查找类似

的内容
package="com.xyz.pgmname".