how do i display an item saved using filewriter in

2019-09-16 04:50发布

问题:

I am saving sensitive user details in my app using file writer, the file is saved to a specified destination. i want to display the saved information in another class in a list view, how do i go about displaying the information into a list view and what is the best way to do this?.

can anybody suggest any means to go about this

Activity where information is saved

public class PasswordKeeperActivity extends Activity implements 
AdapterView.OnItemSelectedListener {

// initialise
EditText username, password, note;
Button save, reset;
public String savedata = Environment.getExternalStorageDirectory().toString();

String[] countryNames={"Google", "Yahoo", "Facebook", "Twitter", "Instagram", "BBM", "Skype", "Other"};
int flags[] = {R.drawable.google, R.drawable.yahoo, R.drawable.facebook, R.drawable.twitter, R.drawable.instagram, R.drawable.bbm, R.drawable.skype, R.drawable.other};

private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
    Manifest.permission.READ_EXTERNAL_STORAGE,
    Manifest.permission.WRITE_EXTERNAL_STORAGE
  };
//  for inflating the menu
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}

// on selection of the menu
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.view_passwords:
    Intent intent = new Intent(this, PasswordView.class);
    startActivity(intent);
    return true;

default:
    return super.onOptionsItemSelected(item);
}
}

public void onItemSelected(AdapterView<?> parent, View view,
                       int pos, long id) {
// An item was selected. You can retrieve the selected item using
// parent.getItemAtPosition(pos)

}

public void onNothingSelected(AdapterView<?> parent) {
// Another interface callback
}

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);

initialise();

//Getting the instance of Spinner and applying OnItemSelectedListener on 
it
Spinner spin = (Spinner) findViewById(R.id.planets_spinner);
spin.setOnItemSelectedListener(this);

CustomAdapter customAdapter = new CustomAdapter(getApplicationContext(), 
flags, countryNames);
spin.setAdapter(customAdapter);

//to set the site Edit Text to get the focus




  // save the data to the textfile
  save.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {

        // creates hidden directory if not existing
        File dir = new File(getCacheDir(), "/sk/");
        if (!dir.exists()) {
            dir.mkdirs();
        }

        // saving data part
        String sFileName = getCacheDir() + "/sk/logp.csv";
        try {
            FileWriter writer = new FileWriter(sFileName, true);

            String  countryNames, sUser, sPass, sAdd;

            countryNames =
            sUser = username.getText().toString();
            sPass = password.getText().toString();
            sAdd = note.getText().toString();



            if ((sUser.equals("")) && (sPass.equals("")) && 
    (sAdd.equals(""))) {
                Toast.makeText(getBaseContext(), "Please Enter At least 
    one Field",
                        Toast.LENGTH_SHORT).show();

            } else {
                if (sUser.equals(""))
                    sUser = "null";
                if (sPass.equals(""))
                    sPass = "null";
                if (sAdd.equals(""))
                    sAdd = "null";


                // encrypting the passwords before saving
                SimpleCrypto mcrypt = new SimpleCrypto();
                sPass = SimpleCrypto.bytesToHex( mcrypt.encrypt(sPass) );
                //sPass = SimpleCrypto.encrypt("fugly", sPass);




                writer.append(sUser);
                writer.append(',');

                writer.append(sPass);
                writer.append(',');
                writer.append(sAdd);

                writer.append('\n');

                // generate whatever data you want

                writer.flush();
                writer.close();

                Toast.makeText(getBaseContext(), "Password Saved!",
                        Toast.LENGTH_SHORT).show();

                Intent intent = new Intent(PasswordKeeperActivity.this, 
    PasswordView.class);
                String[] myStrings = new String[] {"Google", "Yahoo", 
   "Facebook", "Twitter", "Instagram", "BBM", "Skype", "Other"};
                int logo[]  = new int[] {R.drawable.google, 
   R.drawable.yahoo, R.drawable.facebook, R.drawable.twitter, 
   R.drawable.instagram, 
   R.drawable.bbm, R.drawable.skype, R.drawable.other};
                intent.putExtra("strings", myStrings);
                intent.putExtra("logos", logo);
                startActivity(intent);
            }

        } catch (Exception e) {
            Toast.makeText(getBaseContext(), e.getMessage(),
                    Toast.LENGTH_SHORT).show();
        }

    }
});

 // Reset
 reset.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {

        countryNames.equals("Google");
        note.setText("");
        username.setText("");
        password.setText("");
        Toast.makeText(getBaseContext(), "Field(s) Cleared!",
                Toast.LENGTH_SHORT).show();
    }
});

}



public void initialise() {


username = (EditText) findViewById(R.id.input_name);
password = (EditText) findViewById(R.id.input_email);
note = (EditText) findViewById(R.id.input_password);

save = (Button) findViewById(R.id.buttonSave);
reset = (Button) findViewById(R.id.ButtonReset);
}

/**
 * Checks if the app has permission to write to device storage
 *
 * If the app does not has permission then the user will be prompted to 
 grant permissions
 *
  * @param activity
  */
 public static void verifyStoragePermissions(Activity activity) {
// Check if we have write permission
int permission = ActivityCompat.checkSelfPermission(activity, 
Manifest.permission.WRITE_EXTERNAL_STORAGE);

 if (permission != PackageManager.PERMISSION_GRANTED) {
    // We don't have permission so prompt the user
    ActivityCompat.requestPermissions(
            activity,
            PERMISSIONS_STORAGE,
            REQUEST_EXTERNAL_STORAGE
    );
}
}
}

回答1:

Use a FileReader to retrieve files. You should use a separate class that stores methods to load and save the files using the FileWriter and FileReader. From there you can add a reference object to that class and use the methods across your entire project to load and save data when its necessary.

Below is a sample of how you can use a FileReader to retrieve data from a file.

File file = new File("Hello.txt");

FileReader fr = new FileReader(file);
char[]a = new char[100];

for(char c : a) {
    System.out.println(c);
}

fr.close();