Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
FileWriter未在Android中写入文件?_Android_Filewriter - Fatal编程技术网

FileWriter未在Android中写入文件?

FileWriter未在Android中写入文件?,android,filewriter,Android,Filewriter,我正在尝试写入一个名为“filename.txt”的新文件,并在打开应用程序时写出“hi”。我该怎么办?我在Eclipse中运行此代码,按F11,打开AVD,然后单击应用程序。我收到“Hello World,appname!”消息,但没有创建任何文件 package com.paad.comparison; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import jav

我正在尝试写入一个名为“filename.txt”的新文件,并在打开应用程序时写出“hi”。我该怎么办?我在Eclipse中运行此代码,按F11,打开AVD,然后单击应用程序。我收到“Hello World,appname!”消息,但没有创建任何文件

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"/>

试着这样做:

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();
 }
FileWriter-fWriter;
File sdCardFile=新文件(Environment.getExternalStorageDirectory()+“\filename.txt”);
Log.d(“TAG”,sdCardFile.getPath())// 您需要在关闭文件之前调用,但是您需要一个
FileDescriptor
,我不相信它可以直接从
FileWriter
获得。但是,您可以使用
FileDescriptor
创建
FileWriter
对象,并且
FileOutputStream
可以为此提供一个对象

以下是基于您的初始代码,但在我的示例中,我选择将文件存储在SD卡上,因此要按原样运行下面的代码,您的应用程序清单将需要在
标记之前添加正确的权限

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

最后,由于
close()
调用了
flush()
,因此在
close()
之前调用
flush()
是多余的,尽管不是有害的

logcat运行时是否有任何内容?对于那些相对较新且正在调试的人,只需知道对于API级别为19或更高的API,不需要写入外部存储即可。因此,如果您的应用程序针对API级别21(检查您的应用程序/build.gradle),那么您不需要将权限添加到AndroidManifest.xml中。谢谢,Tim。代码运行;但是,我仍然没有看到文件被保存在任何地方。是否应该存在.getExternalStorageDirectory()引用的路径?这只能在硬件设备上正确运行吗?我想它可以在emulator上运行,但老实说我不知道。我只使用模拟器来测试不同的屏幕大小。我在设备上测试的所有其他内容。@MiguelDiaz您的仿真器有SD卡设置吗?
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);
    }
}