我正在通过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的二进制代码
答案 0 :(得分:1)
您是否已设置保存在SD卡上的权限?
https://developer.android.com/guide/topics/data/data-storage.html和https://developer.android.com/reference/android/Manifest.permission.html (https://developer.android.com/reference/android/Manifest.permission.html#WRITE_EXTERNAL_STORAGE)
答案 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();
}
}
}