1

私は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に送信したバイナリコードを返します

4

3 に答える 3

0

エンコーディングが変更されないように、writeBytes()代わりに使用したいと思います。writeUTF()

于 2012-05-09T20:47:08.477 に答える
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();
             }
      }
 }
于 2012-05-09T21:21:34.500 に答える