java - 文件已创建但返回 false

标签 java android file exists creation

我不明白为什么我们不进入第二个if。我首先检查文件是否存在(不,逻辑),创建它,然后再次检查,但它仍然返回 false。我试了一个小时才找到问题,我确信这是一个愚蠢的错误。抱歉我的英语不好

代码如下:

package com.example.testcreatefileonclick;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class Main extends Activity implements android.view.View.OnClickListener{

    Button button;
    Button addTeam;
    Boolean append = true;

    String name = "nomFichier.txt";

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

        button = (Button)findViewById(R.id.button1);
        button.setOnClickListener((OnClickListener) this);
        addTeam = (Button)findViewById(R.id.button2);
        addTeam.setOnClickListener((OnClickListener) this);

    }

    @Override
    public void onClick(View v) {
        try {
            File fichier = new File(name);


            if (!fichier.exists()) {
                System.out.println("File doesn't exists");
            }


            FileOutputStream fOut = openFileOutput(name, MODE_WORLD_READABLE);
            OutputStreamWriter osw = new OutputStreamWriter(fOut); 
            osw.write("text");
            osw.flush();
            osw.close();

            //Why don't we go in this if ?
            if (fichier.exists()) {
                System.out.println("File exists");
            }


        } catch (Exception e) {
            // TODO: handle exception
        }
    }
}

编辑:工作代码

package com.example.testcreatefileonclick;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

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

public class Main extends Activity implements android.view.View.OnClickListener{

    Button button;
    Button addTeam;
    Boolean append = true;
    String name = "nomFichier.txt";

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

        button = (Button)findViewById(R.id.button1);
        button.setOnClickListener((OnClickListener) this);
        addTeam = (Button)findViewById(R.id.button2);
        addTeam.setOnClickListener((OnClickListener) this);

    }

    @Override
    public void onClick(View v) {
        try {
            String filePath = (this.getFilesDir().getPath().toString());
            File fichier = new File(filePath + name);

            if (!fichier.exists()) {
                System.out.println("File doesn't exists");
            }

            fichier.createNewFile();
            FileWriter file = new FileWriter(filePath + name);
            file.write("text");
            file.flush();
            file.close();

            if (fichier.exists()) {
                System.out.println("File exists");
            }


        } catch (IOException e) {
            System.out.println("Exception");
            e.printStackTrace();
        }
    }
}

最佳答案

尝试替换这个:

FileOutputStream fOut = openFileOutput(name, MODE_WORLD_READABLE);
        OutputStreamWriter osw = new OutputStreamWriter(fOut); 
        osw.write("text");
        osw.flush();
        osw.close();

通过这个:

fichier.createNewFile();
FileWriter file = new FileWriter(name);
file.write("text");
file.flush();
file.close();

关于java - 文件已创建但返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16082590/

相关文章:

java - Java 中的日语字符编码

java - 我正在尝试删除 +911111 之类的通话记录,但它不起作用

java - 将文本文件解析为字符串(JAVA)

java - 如何使用 swipeRefreshLayout 更新 fragment 中的新 json 数据

java - 如果文件和中间目录不存在,则创建

php - 如何在 PHP 中逐行写入文本文件?

java - 您如何从 servlet 内省(introspection) web.xml?

java - 在给定开始时间和持续时间的情况下查找任务结束顺序的算法

java - ArrayList 的外键等效吗?

android - 将 XML/JSON 响应缓存到我的应用程序中的最佳方式。全文文件?