FileWriter的不是写在Android中,以文件?(FileWriter not writin

2019-09-19 05:29发布

我试图写一个名为“FILENAME.TXT”的新文件,并写入了“喜”当我打开一个应用程序。 我怎么去呢? 我在Eclipse中运行,按F11这个代码,开拓AVD,然后点击应用。 我得到的“Hello World,应用程序的名字!” 消息,但没有文件被创建。

package com.paad.comparison;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Environment;
import android.widget.Toast;

public class ComparisonOfControlCreationActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
        String string1 = "Hey you";
        FileWriter fWriter;
        try{
            fWriter = new FileWriter("filename.txt", true);
            fWriter.write("hi");
            fWriter.flush();
            fWriter.close();
        } catch(Exception e) {
            e.printStackTrace();
        }

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

编辑:对于任何人,恰好碰上将来出现此问题,请确保您的AndroidManifest.xml档案中有一行

< uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />之间没有<和u的空间

Answer 1:

尝试这样的:

FileWriter fWriter;
File sdCardFile = new File(Environment.getExternalStorageDirectory() + " \filename.txt");
Log.d("TAG", sdCardFile.getPath()); //<-- check the log to make sure the path is correct.
try{
     fWriter = new FileWriter(sdCardFile, true);
     fWriter.write("hi");
     fWriter.flush();
     fWriter.close();
 }catch(Exception e){
          e.printStackTrace();
 }


Answer 2:

你需要调用sync()关闭文件之前,但你需要FileDescriptor对于这一点,我不相信这是直接从FileWriter 。 但是,您可以创建一个FileWriter使用对象FileDescriptorFileOutputStream可以提供一个用于此目的。

以下是根据您最初的代码,但是我选择存储在我的例子中,SD卡的文件,所以运行下面的代码为您的应用清单将需要之前添加的正确的权限<application>标记。

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

也就是说,如果你想直接在设备上存储的文件的结果将不会受到影响。

代码(在Desire HD的测试):

package com.paad.comparison;

import java.io.FileOutputStream;
import java.io.FileWriter;

import android.app.Activity;
import android.os.Bundle;

public class ComparisonOfControlCreationActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        String string1 = "Hey you";

        FileOutputStream fos ;

        try {
            fos = new FileOutputStream("/sdcard/filename.txt", true);

            FileWriter fWriter;

            try {
                fWriter = new FileWriter(fos.getFD());
                fWriter.write("hi");
                fWriter.close();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                fos.getFD().sync();
                fos.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

最后, flush()的调用close() ,调用flush()立即之前close()是多余的,虽然不会对人体有害。



文章来源: FileWriter not writing to file in Android?