简单的写文件代码在java中工作,但在android设备上不工作
我测试了这段代码,它在java中运行良好,并在我的笔记本电脑上编写了一个测试文件,但无法在android设备上运行 我放了一个注释来显示空指针异常的位置 当我在几个不同的安卓设备上运行时,结果是一样的。它与同一行代码中的空指针崩溃 是什么原因导致它在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
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);