java将二进制代码保存到文件中

时间:2012-05-09 20:42:27

标签: java android binaryfiles outputstream fileoutputstream

我正在通过ajax检索图片文件作为二进制代码,然后javascript将它传递给android上的java并且android获取二进制代码但是我无法使它保存它...我尝试了许多不同的方式和什么都行不通。

到目前为止,java上的代码如下所示:

 public void setFile(String sFileName, String sBody){
    try
    {
        //Log.w("setfile", sBody);
        File root = new File(Environment.getExternalStorageDirectory(), local_address);
        if (!root.exists()) {
            root.mkdirs();
        }
        File gpxfile = new File(root, sFileName);
        FileOutputStream aFileOutStream = new FileOutputStream(gpxfile);
        DataOutputStream aDataOutputStream = new DataOutputStream(aFileOutStream);


        aDataOutputStream.writeUTF(sBody);
        aDataOutputStream.flush();
        aDataOutputStream.close();
        aFileOutStream.close();

        //FileWriter writer = new FileWriter(gpxfile);
        //writer.append(sBody);
        //writer.flush();
        //writer.close();
        //Toast.makeText(this, "Saved", Toast.LENGTH_SHORT).show();
    }
    catch(IOException e)
    {
         e.printStackTrace();
    }
   }  

我知道java正在运行,因为如果我取消注释这一行

// Log.w(“setfile”,sBody);

log cat会返回javascript发送java的二进制代码

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

我相信你想使用writeBytes()代替writeUTF(),这样就不会改变你的编码。

答案 2 :(得分:0)

这个对我有用:

public void WriteSettings(Context context, String data){
     FileOutputStream fOut = null;
     OutputStreamWriter osw = null;

     try{
         fOut = openFileOutput("settings.dat", MODE_PRIVATE);      
         osw = new OutputStreamWriter(fOut);

         osw.write(data);
         osw.flush();

         Toast.makeText(context, "Settings saved", Toast.LENGTH_SHORT).show();
     }

      catch (Exception e) {      
         e.printStackTrace();
         Toast.makeText(context, "Settings not saved", Toast.LENGTH_SHORT).show();
      }

      finally {
         try {
             osw.close();
             fOut.close();
         } catch (IOException e) {
                e.printStackTrace();
             }
      }
 }