简单的写文件代码在java中工作,但在android设备上不工作

简单的写文件代码在java中工作,但在android设备上不工作,java,android,file-io,Java,Android,File Io,我测试了这段代码,它在java中运行良好,并在我的笔记本电脑上编写了一个测试文件,但无法在android设备上运行 我放了一个注释来显示空指针异常的位置 当我在几个不同的安卓设备上运行时,结果是一样的。它与同一行代码中的空指针崩溃 是什么原因导致它在java桌面应用程序上工作时没有错误,在android设备上获得空指针 有什么想法吗 public class MainActivity extends Activity { @Override public void onCrea

我测试了这段代码,它在java中运行良好,并在我的笔记本电脑上编写了一个测试文件,但无法在android设备上运行

我放了一个注释来显示空指针异常的位置

当我在几个不同的安卓设备上运行时,结果是一样的。它与同一行代码中的空指针崩溃

是什么原因导致它在java桌面应用程序上工作时没有错误,在android设备上获得空指针

有什么想法吗

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        File makeDirectory = new File("/mnt/testDirectory/");

        // File makeDirectory = new File("C:/testDirectory/"); // when used on
        // java desktop app

        makeDirectory.mkdir();

        File file = new File("/mnt/testDirectory/testfile.txt");

        // File file = new File("C:/testDirectory/testfile.txt"); // when used
        // on java desktop app

        try {
            file.createNewFile();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

        PrintStream output = null;
        try {
            output = new PrintStream(new FileOutputStream(file));
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        output.print(true); // <----- NULL POINTER EXCEPTION THIS LINE
        output.print((int) 123);
        output.print((float) 123.456);

        output.printf(Locale.UK, "Text + data: %1$", 123);

        output.close();

    }
}
从这个问题:


这是从外部存储器获取文件的方法:

File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), filename);
注:

如果您的设备已根目录,则可能是。mnt可以工作。我不知道。但是 这是一种错误的做法

啊哼,/嗯? 根据我遇到的所有教程以及android开发者网站; 您需要使用:


方法,该方法返回一个包含对根存储目录的引用的文件对象。从那时起;如果你是一个优秀的java程序员,我认为你可以处理其余的;)

这不是访问外部文件存储的方式。看到了吗,即使SD卡插槽中没有插入SD卡,这个功能也会工作吗?我知道有些android设备有/mnt/sdcard/实际上不是真正的SD卡,sdcard只是内存中的一个文件夹。不是实际的硬件SD卡,但adroid设备是否可能没有用于Environment.getExternalStorageDirectory的任何内容。换句话说,没有什么会被认为是外在的,我相信我有信仰
"Android will always report one mounted hardware memory (if any available) as External Storage.

That memory can be:

fitted inside the device by manufacturer (internal memory)
can be an sd card (external memory)
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), filename);