es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Leer/Escribir y comparar el almacenamiento externo de Android

public class PaymentActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_payment);

    String FILENAME = "paid";
    String data = "yes";

    File folder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);


    try {
        File myFile = new File(folder, FILENAME);
        FileOutputStream fstream = new FileOutputStream(myFile);
        fstream.write(data.getBytes());
        fstream.close();

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }


    try {
        File myFile = new File(folder, FILENAME);
        FileInputStream fstream = new FileInputStream(myFile);
        StringBuilder sbuffer = new StringBuilder();
        int i;
        while ((i = fstream.read()) != -1){
            sbuffer.append((char)i);
        }

        String haspaid = sbuffer.toString();
        System.out.println("¡Ayuda! ¿" + haspaid.equals("yes") + "?");
        if (haspaid.equals("yes")) {

            Intent intent = new Intent(this, MainActivity.class);
            startActivity(intent);
        }
        fstream.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
}

Tengo un archivo de escritura que ingresa “yes” y un archivo de lectura que lee ese “yes” en el almacenamiento externo. Imprimo System.out.println para verificarlo y la lectura/escritura del archivo parece funcionar. Sin embargo, de alguna manera, cuando comparo la cadena resultante, no puede comprobar si es un valor válido.

¿Qué estoy haciendo mal?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Es difícil determinar el problema exacto sin más contexto, pero podría ser un problema con la codificación de las cadenas. Se recomienda utilizar la misma codificación al escribir y leer el archivo. En este caso, el método getBytes() se utiliza para escribir los datos, pero se utiliza la codificación predeterminada que puede ser diferente de la codificación utilizada para leer el archivo. Para garantizar la consistencia, se recomienda especificar la codificación al escribir y leer el archivo, como por ejemplo con Charset.forName("UTF-8").getBytes() y new InputStreamReader(fstream, Charset.forName("UTF-8")). Además, es importante asegurarse de que el archivo exista y sea accesible.

Comments are closed.