Estoy tratando de escribir un archivo de un Http post en respuesta a un archivo en el sdcard. Todo funciona bien hasta que la matriz de bytes de datos se recuperan.

He probado la configuración de WRITE_EXTERNAL_STORAGE permiso en el manifiesto
y probado muchas combinaciones diferentes de los tutoriales que he encontrado en la red.

Todos los que pude encontrar fue el uso de la openFileOutput("",MODE_WORLD_READABLE) método, de la actividad, sino también cómo mi app escribe archivos es mediante el uso de un hilo. Específicamente, un hilo es invocado desde otro hilo cuando un archivo tiene que ser por escrito,
dando así una actividad objeto de no trabajar a pesar de que lo intenté.

La aplicación ha recorrido un largo camino y no puedo cambiar la forma en que la aplicación está actualmente escrito.

Por favor, alguien que me ayude?


CÓDIGO:

File file = new File(bgdmanip.savLocation);
FileOutputStream filecon = null;
filecon = new FileOutputStream(file);

byte[] myByte;
myByte = Base64Coder.decode(seReply);

bos.write(myByte);
filecon.write(myByte);
myvals = x * 11024;

bgdmanip.savLocation que sostiene toda la ruta de los archivos. seReply es una cadena de respuesta de HttpPost respuesta. El segundo conjunto de código es un bucle con referencia a x. Se crea el archivo pero sigue siendo de 0 bytes.

InformationsquelleAutor Sumit M Asok | 2010-03-16

3 Comentarios

  1. 22

    La openFileOutput() método escribe datos a la aplicación privada del área de datos (no en la tarjeta SD), así que probablemente no es lo que usted desea. Usted debe ser capaz de llamar a Environment.getExternalStorageDirectory() para obtener la ruta de acceso raíz de la tarjeta SD y el uso que para crear un FileOutputStream. A partir de ahí, sólo tiene que utilizar el estándar de java.io rutinas.

    • Gracias A Erich. Estoy pasando la ruta de acceso completa como cadena como ésta «/sdcard/nombre de archivo.ext» . también se creó el archivo, pero el tamaño del archivo permanece en 0 bytes. además, no soy capaz de usar el push/pull archivo de los controles de la DDMS de eclipse.
    • Usted puede ser que necesite para publicar algunos de sus archivos de la escritura de código para ayudar a diagnosticar el problema. No todo, pero al menos los conceptos básicos de lo que está pasando. También, están viendo los mensajes en el LogCat?
    • Erich, he actualizado el código. no se crean mensajes sobre el archivo ops en el LogCat. He cambiado el código de un montón de tiempo que tengo errores en el código, pero no recordar que el código me dio errores.
    • Erich, también creo que no se puede ver el empuje tire de los botones en el DDMS de eclipse. Es esto algo acerca de por qué no soy capaz de escribir en el archivo ? Puedo ver la sdcard y archivos pero no los botones de control mencionados anteriormente son visibles.
  2. 28
    //------------------------------WRITING DATA TO THE FILE ---------------------------------      
    btnWriteSDFile.setOnClickListener(new OnClickListener() 
    {
    public void onClick(View v)
    {       
    try {
    File myFile = new File("/sdcard/mysdfile.txt");
    myFile.createNewFile();
    FileOutputStream fOut = new FileOutputStream(myFile);
    OutputStreamWriter myOutWriter =new OutputStreamWriter(fOut);
    myOutWriter.append(txtData.getText());
    myOutWriter.close();
    fOut.close();
    Toast.makeText(v.getContext(),"Done writing SD 'mysdfile.txt'", Toast.LENGTH_SHORT).show();
    txtData.setText("");
    } 
    catch (Exception e) 
    {
    Toast.makeText(v.getContext(), e.getMessage(),Toast.LENGTH_SHORT).show();
    }
    }
    }); 
    //---------------------------READING DATA FROM THE FILE PLACED IN SDCARD-------------------//      
    btnReadSDFile.setOnClickListener(new OnClickListener()
    {
    public void onClick(View v) 
    {
    try {
    File myFile = new File("/sdcard/mysdfile.txt");
    FileInputStream fIn = new FileInputStream(myFile);
    BufferedReader myReader = new BufferedReader(new InputStreamReader(fIn));
    String aDataRow = "";
    String aBuffer = "";
    while ((aDataRow = myReader.readLine()) != null) 
    {
    aBuffer += aDataRow ;
    }
    txtData.setText(aBuffer);
    myReader.close();
    Toast.makeText(v.getContext(),"Done reading SD 'mysdfile.txt'",Toast.LENGTH_SHORT).show();
    } 
    catch (Exception e)
    {
    Toast.makeText(v.getContext(), e.getMessage(),Toast.LENGTH_SHORT).show();
    }
    }
    }); 

    JUNTO CON ESTO TAMBIÉN ESCRIBIR ESTE PERMISO EN Android.Manifiesto

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    • eso es lo que llamamos un programador de vista
    • aquí en lugar de edittext me gustaría pasar dos valores de cadena y almacenarlos en un archivo en la sdcard. ¿Cómo puedo lograr esto?
    • Por favor, siga este enlace, espero que usted va a obtener su solución stackoverflow.com/questions/9962896/…
    • he resuelto el problema . Gracias 🙂
    • Su gran que tienes tu solución, ahora me debes un almuerzo, hahahah. adelante con suerte
  3. 3

    He aquí un ejemplo:

    //Log used as debug
    File log = new File(Environment.getExternalStorageDirectory(), "Log.txt");
    try {
    out = new BufferedWriter(new FileWriter(log.getAbsolutePath(), false));
    out.write(new Date().toString());
    out.write(" : \n");
    } catch (Exception e) {
    Log.e(TAG, "Error opening Log.", e);
    }

Dejar respuesta

Please enter your comment!
Please enter your name here