将byte []数组写入Android中的文本文件

时间:2014-02-21 04:45:07

标签: android bytearray fileoutputstream

这个问题有很多例子。我试过但仍然无法正常工作。 Test.txt文件已创建。但是没有数据写入test.txt文件。 我的代码出了什么问题?我在Manifest文件中获得了

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

代码:

String file_path = Environment.getExternalStorageDirectory().getAbsolutePath() + 
        "/PrintFiles";
File file = new File(file_path+"/test.txt");
if (!file.exists()) {
   try {
    file.createNewFile();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
}

FileOutputStream fos = null;
try {
    fos = openFileOutput(file.getName(), Context.MODE_PRIVATE);
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

byte[] b = {65,66,67,68,69};
fos.write(b);
fos.flush();
fos.close();

2 个答案:

答案 0 :(得分:3)

来自文档openFileOutput

Open a private file associated with this Context's application package for writing. Creates the file if it doesn't already exist.

这些文件位于。

之下
data > data > your app id > files

但您的文件不在内部文件夹中,而是在外部存储中..

更改此行

fos = openFileOutput(file.getName(), Context.MODE_PRIVATE);

进入

fos=new FileOutputStream(file);

试试..

答案 1 :(得分:2)

原因是,您正在 SDCard 中创建文件,但使用内部存储进行书写。尝试如下......

String file_path = Environment.getExternalStorageDirectory().getAbsolutePath() + 
        "/PrintFiles";
File file = new File(file_path+"/test.txt");
if (!file.exists()) {
   try {
    file.createNewFile();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
}

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

byte[] b = {65,66,67,68,69};
fos.write(b);
fos.flush();
fos.close();