2012-05-09 80 views
1

我正在通過ajax檢索圖片文件爲二進制代碼,然後javascript將其傳遞給java上的android和android正在獲取二進制代碼,但我不能讓它保存...我嘗試了很多不同的方式,沒有任何作用。java將二進制代碼保存到文件

上的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);

日誌貓將返回的JavaScript發送的java

+0

你在你的本地文件得到了什麼呢?任何特定的錯誤消息? – ametren

+0

它是'日誌貓'不'低貓'x) – sschrass

+0

不,該文件是空的okb – user1342645

回答

0

我相信你想使用writeBytes(),而不是writeUTF()所以它不會改變你的編碼。

+0

做到了,並沒有工作 – user1342645

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(); 
      } 
     } 
}