创建文本文件android时出错

Android2841

我收到错误java.io.FileNotFoundException:删除/contact/contact.txt:打开失败:每当尝试创建文件时,ENOENT(无此类文件或目录)。有人可以让我知道我是否给出了正确的文件路径。我也已经在清单中给出了所需的权限

主要活动

public class MainActivity extends Activity {
    List<String> phone = new ArrayList<String>();
    Context context =this;
    List<String> firstname = new ArrayList<String>();
    List<String> lastname= new ArrayList<String>();
    int data_block =100;
    List<contact> rowItems;
    ListView mylistview;
    public String path = Environment.getExternalStorageState()+"/contact";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        File f = new File(path);
        f.mkdirs();


        mylistview=(ListView) findViewById(R.id.contactList);
        ContactAdpater adapter =new ContactAdpater (this,getContact());
        mylistview.setAdapter(adapter);


    }
    private ArrayList<contact> getContact(){
        try {
            File fi= new File(path+"/contact.txt");
            Scanner s = null;
            s  = new Scanner(fi);
            while(s. hasNextLine()){
                System.out.println(s.nextLine());
                String firstName = s.next();
                String lastName = s.next();
                String phone = s.next();
                Toast.makeText(getBaseContext(),"Message2:"+firstName,Toast.LENGTH_SHORT).show();

            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }


        ArrayList<contact> alarms= new ArrayList<contact>();

        for (int i =0; i<firstname.size();i++){
            alarms.add(new contact (firstname.get(i),lastname.get(i),phone.get(i)));
        }
        return alarms;
    }
    @Override
    protected void onResume (){
        //run this method on the finish of second activity and update the database
        super.onResume();


        mylistview=(ListView) findViewById(R.id.contactList);
        ContactAdpater adapter =new ContactAdpater (this,getContact());
        mylistview.setAdapter(adapter);

    }
    public void add(View v){
        Intent getNameIntent = new Intent(MainActivity.this, AddContact.class);
        startActivity(getNameIntent);

    }
    public void remove(View v){
        Intent getNameIntent = new Intent(MainActivity.this, DeleteContact.class);
        startActivity(getNameIntent);
    }





}

添加联系人

    public class AddContact extends Activity {
    EditText textFirstName,textLastName,textPhone;
    public String path = Environment.getExternalStorageState()+"/contact";
    String first,last,phone;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_contact);
        textFirstName = (EditText) findViewById(R.id.editText);
        textLastName = (EditText) findViewById(R.id.editText2);
        textPhone = (EditText) findViewById(R.id.editText3);
    }

    public void save(View v){

        first= textFirstName.getText().toString();
        last= textLastName.getText().toString();
        phone= textPhone.getText().toString();
        try{

            File fou= new File(path+"/contact.txt");
            FileWriter fWriter = new FileWriter (fou);
            PrintWriter pWriter = new PrintWriter (fWriter);
            pWriter.println(first+" "+last+" "+phone);
            pWriter.close();



        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        finish();
    }



    public void cancel (View v){
        finish();

    }
}

日志广播

    12-07 11:48:45.627 17718-17744/com.example.lab6 W/EGL_emulation: eglSurfaceAttrib not implemented
12-07 11:48:45.627 17718-17744/com.example.lab6 W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xabdbe840, error=EGL_SUCCESS
12-07 11:48:45.705 17718-17744/com.example.lab6 E/Surface: getSlotFromBufferLocked: unknown buffer: 0xab7548b0
12-07 11:48:45.708 17718-17744/com.example.lab6 D/OpenGLRenderer: endAllStagingAnimators on 0xab66e180 (RippleDrawable) with handle 0xabdbf760
12-07 11:48:59.957 17718-17718/com.example.lab6 W/System.err: java.io.FileNotFoundException: removed/contact/contact.txt: open failed: ENOENT (No such file or directory)
12-07 11:48:59.957 17718-17718/com.example.lab6 W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:452)
12-07 11:48:59.957 17718-17718/com.example.lab6 W/System.err:     at java.io.FileOutputStream.<init>(FileOutputStream.java:87)
12-07 11:48:59.957 17718-17718/com.example.lab6 W/System.err:     at java.io.FileOutputStream.<init>(FileOutputStream.java:72)
12-07 11:48:59.957 17718-17718/com.example.lab6 W/System.err:     at java.io.FileWriter.<init>(FileWriter.java:42)
12-07 11:48:59.957 17718-17718/com.example.lab6 W/System.err:     at com.example.lab6.AddContact.save(AddContact.java:41)
12-07 11:48:59.957 17718-17718/com.example.lab6 W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
12-07 11:48:59.957 17718-17718/com.example.lab6 W/System.err:     at android.view.View$DeclaredOnClickListener.onClick(View.java:4447)
12-07 11:48:59.957 17718-17718/com.example.lab6 W/System.err:     at android.view.View.performClick(View.java:5198)
12-07 11:48:59.957 17718-17718/com.example.lab6 W/System.err:     at android.view.View$PerformClick.run(View.java:21147)
12-07 11:48:59.957 17718-17718/com.example.lab6 W/System.err:     at android.os.Handler.handleCallback(Handler.java:739)
12-07 11:48:59.957 17718-17718/com.example.lab6 W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
12-07 11:48:59.957 17718-17718/com.example.lab6 W/System.err:     at android.os.Looper.loop(Looper.java:148)
12-07 11:48:59.957 17718-17718/com.example.lab6 W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5417)
12-07 11:48:59.957 17718-17718/com.example.lab6 W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
12-07 11:48:59.957 17718-17718/com.example.lab6 W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
12-07 11:48:59.957 17718-17718/com.example.lab6 W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
12-07 11:48:59.957 17718-17718/com.example.lab6 W/System.err: Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
12-07 11:48:59.957 17718-17718/com.example.lab6 W/System.err:     at libcore.io.Posix.open(Native Method)
12-07 11:48:59.958 17718-17718/com.example.lab6 W/System.err:     at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
12-07 11:48:59.958 17718-17718/com.example.lab6 W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:438)
12-07 11:48:59.958 17718-17718/com.example.lab6 W/System.err:   ... 15 more
12-07 11:48:59.979 17718-17718/com.example.lab6 W/System.err: java.io.FileNotFoundException: removed/contact/contact.txt: open failed: ENOENT (No such file or directory)
12-07 11:48:59.979 17718-17718/com.example.lab6 W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:452)
12-07 11:48:59.979 17718-17718/com.example.lab6 W/System.err:     at java.io.FileInputStream.<init>(FileInputStream.java:76)
12-07 11:48:59.979 17718-17718/com.example.lab6 W/System.err:     at java.util.Scanner.<init>(Scanner.java:158)
12-07 11:48:59.979 17718-17718/com.example.lab6 W/System.err:     at java.util.Scanner.<init>(Scanner.java:138)
12-07 11:48:59.979 17718-17718/com.example.lab6 W/System.err:     at com.example.lab6.MainActivity.getContact(MainActivity.java:52)
12-07 11:48:59.979 17718-17718/com.example.lab6 W/System.err:     at com.example.lab6.MainActivity.onResume(MainActivity.java:80)
12-07 11:48:59.979 17718-17718/com.example.lab6 W/System.err:     at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1258)
12-07 11:48:59.979 17718-17718/com.example.lab6 W/System.err:     at android.app.Activity.performResume(Activity.java:6312)
12-07 11:48:59.980 17718-17718/com.example.lab6 W/System.err:     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3092)
12-07 11:48:59.980 17718-17718/com.example.lab6 W/System.err:     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3134)
12-07 11:48:59.980 17718-17718/com.example.lab6 W/System.err:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1388)
12-07 11:48:59.980 17718-17718/com.example.lab6 W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:102)
12-07 11:48:59.980 17718-17718/com.example.lab6 W/System.err:     at android.os.Looper.loop(Looper.java:148)
12-07 11:48:59.980 17718-17718/com.example.lab6 W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5417)
12-07 11:48:59.980 17718-17718/com.example.lab6 W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
12-07 11:48:59.980 17718-17718/com.example.lab6 W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
12-07 11:48:59.980 17718-17718/com.example.lab6 W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
12-07 11:48:59.980 17718-17718/com.example.lab6 W/System.err: Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
12-07 11:48:59.980 17718-17718/com.example.lab6 W/System.err:     at libcore.io.Posix.open(Native Method)
12-07 11:48:59.980 17718-17718/com.example.lab6 W/System.err:     at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
12-07 11:48:59.980 17718-17718/com.example.lab6 W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:438)
12-07 11:48:59.980 17718-17718/com.example.lab6 W/System.err:   ... 16 more
12-07 11:49:00.009 17718-17744/com.example.lab6 W/EGL_emulation: eglSurfaceAttrib not implemented
12-07 11:49:00.009 17718-17744/com.example.lab6 W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xad720560, error=EGL_SUCCESS
12-07 11:49:00.098 17718-17744/com.example.lab6 E/Surface: getSlotFromBufferLocked: unknown buffer: 0xab7582e0
12-07 11:49:00.101 17718-17744/com.example.lab6 D/OpenGLRenderer: endAllStagingAnimators on 0xaf7fb780 (RippleDrawable) with handle 0xad71a400

显现

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.lab6">
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".AddContact" />
        <activity android:name=".DeleteContact"></activity>
    </application>

</manifest>
瓦西里斯·帕拉斯(Vasilis Pallas)

只是改变

public String path = Environment.getExternalStorageState()+"/contact";

public String path = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "/contact";

从文档中

android.os.Environment public static java.lang.String getExternalStorageState()返回主“外部”存储设备的当前状态。返回:MEDIA_UNKNOWN,MEDIA_REMOVED,MEDIA_UNMOUNTED,MEDIA_CHECKING,MEDIA_NOFS,MEDIA_MOUNTED,MEDIA_MOUNTED_READ_ONLY,MEDIA_SHARED,MEDIA_BAD_REMOVAL或MEDIA_UNMOUNTABLE之一。

如您所见

java.io.FileNotFoundException: removed/contact/contact.txt

您的路径已删除/contact/contact.txt,因为Environment.getExternalStorageState()返回已删除。

** 编辑 **

另外,您还必须在getContact()和save()方法上进行此更改

getContact:

    private ArrayList<contact> getContact(){
        try {
            File fi= new File(path+"/contact.txt");
            Scanner s = null;
            s  = new Scanner(fi);
            while(s.hasNext()){
                String firstName = s.next();
                String lastName = s.next();
                String phone = s.next();
            Toast.makeText(getBaseContext(),"Message2:"+firstName,Toast.LENGTH_SHORT).show();

            }
            catch (FileNotFoundException e) {
            e.printStackTrace();
          }


          ArrayList<contact> alarms= new ArrayList<contact>();

          for (int i =0; i<firstname.size();i++){
              alarms.add(new contact (firstname.get(i),lastname.get(i),phone.get(i)));
          }
          return alarms;
     }

正如您所展示的,我删除了System.out.println(s.nextLine());因为它吃掉了所有行,并且

String firstName = s.next();
String lastName = s.next();
String phone = s.next();

或扔一个NoSuchElementException我也改变了while(s.hasNextLine())while(s.hasNext())因为它也抛出了NoSuchElementException

保存:

  public void save(View v){

        first= textFirstName.getText().toString();
        last= textLastName.getText().toString();
        phone= textPhone.getText().toString();
        try{

            File fou = new File(path + File.separator +"contact.txt");
            if (!fou.exists()) {
                fou.createNewFile();
            }
            FileWriter fWriter = new FileWriter (fou);
            PrintWriter pWriter = new PrintWriter (fWriter);
            pWriter.println(first+" "+last+" "+phone);
            pWriter.close();



        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        finish();
    }

在这里,我所做的唯一更改是

   if (!fou.exists()) {
        fou.createNewFile();
    }

创建文件(如果不存在)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用 Servlet 时无法创建文本文件

来自分类Dev

创建文本文件

来自分类Dev

PHP创建文本文件-创建文本文件很困难

来自分类Dev

从文本文件列表创建文件

来自分类Dev

当我尝试创建文本文件时,抛出以下错误

来自分类Dev

尝试创建文本文件时出现参数Null异常错误

来自分类Dev

批量创建文本文件时如何不显示提示框?

来自分类Dev

在打开/创建文本文件时需要帮助

来自分类Dev

在 JavaScript 中创建文本文件时,'\n' 会被忽略吗?

来自分类Dev

创建文本文件时VBA特殊字符编码问题

来自分类Dev

Qt(C ++):QFile成功创建文本文件,但未写入文本文件

来自分类Dev

未在'if'语句中创建文本文件

来自分类Dev

使用SQL在Oracle中创建文本文件

来自分类Dev

在C#中创建文本文件

来自分类Dev

使用javascript创建文本文件

来自分类Dev

Python在错误的路径上创建文本文件

来自分类Dev

Java:读取,编辑和创建文本文件

来自分类Dev

未在'if'语句中创建文本文件

来自分类Dev

在可执行JAR中创建文本文件

来自分类Dev

使用Matlab创建文本文件

来自分类Dev

如何通过python创建文本文件?

来自分类Dev

从列表中的每个链接创建文本文件?

来自分类Dev

使用VBA创建文本文件

来自分类Dev

如何在使用C#Windows应用程序创建文本文件时添加文本?

来自分类Dev

中途出错,从文本文件创建不同的对象

来自分类Dev

打印到文本文件时出错

来自分类Dev

读取文本文件中的单词时出错

来自分类Dev

对象存储-读取文本文件时出错

来自分类Dev

从单个文本文件创建多个文本文件时如何包括标题模式