我正在编写一个必须通过蓝牙发送一些文件的应用程序。 客户端收到一个字节数组,然后必须将其构造到文件中。但是只有数组中的几行被复制到文件中! 这是我的线程代码,其中读取来自服务器的每条消息:
编辑:try/catch 代码。
try {
FileOutputStream fos = new FileOutputStream("//mnt//sdcard//" + fileName);
fos.write(buffer);
fos.close();
}
catch(FileNotFoundException e) {
Log.d("FAIL", e.toString());
}
catch (IOException e) {
Log.d("FAIL", e.toString());
}
缓冲区是byte[]。我什至检查了 Toast:缓冲区一切正常。它包含文件中的每个符号,但我无法以某种方式全部写入。
最佳答案
您永远不应该像以前那样对文件路径进行硬编码。
在android中,你应该使用Environment.getExternalStorageDirectory
String fname = Environment.getExternalStorageDirectory() + "myfile.jpg";
File file = new File( fname );
如果您没有在文件路径中指定 Environment.getExternalStorageDirectory,它将在您的应用程序安装文件夹中返回。
在你的例子中,这个文件可能写在“com.your.package/test.jpg”
关于java - 在 android 中从 byte[] 写入文件失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12829492/