Проблема с записью файлов в Android Emulator - PullRequest
1 голос
/ 10 ноября 2010

Я пытаюсь записать некоторые простые данные во внешнее хранилище, используя следующий код. Я что-то здесь упускаю, но не уверен, что. Спасибо

RobD

открытый класс TimeCard расширяет Activity { / ** Вызывается при первом создании действия. * / @Override public void onCreate (BundlevedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.main);

    final Button button = (Button) findViewById(R.id.Button01);
    final EditText edittext = (EditText) findViewById(R.id.EditText01);
    final EditText edittext1 = (EditText)findViewById(R.id.EditText02);
    final EditText edittext2 = (EditText)findViewById(R.id.EditText03);
    final EditText edittext3 = (EditText)findViewById(R.id.EditText04);
    final String inputString = edittext + "/n" + edittext1 + "/n"+  edittext2 + "/n" + edittext3;
    button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {               
          //Do it
          CreateFile(inputString);
          //Let them know it
          Toast.makeText(TimeCard.this, "You are Clocked In", Toast.LENGTH_LONG).show();
        }


    });
}
//Write to SD Card

public void CreateFile (String InputString) {

 File SDCard = Environment.getExternalStorageDirectory();  
 String FILENAME = SDCard + "/time_card.txt";

    FileOutputStream fos = null;
    try {
        fos = openFileOutput(FILENAME, Context.MODE_WORLD_READABLE);
    } catch (FileNotFoundException e) {

        e.printStackTrace();
    }
    try {
        fos.write(InputString.getBytes());
    } catch (IOException e) {

        e.printStackTrace();
    }
    try {
        fos.close();
    } catch (IOException e) {

        e.printStackTrace();
    }
    }

}

Ответы [ 2 ]

3 голосов
/ 11 ноября 2010

Я попытался запустить ваш код, и ошибка вызвана тем, как вы используете метод openFileOutput(String name, int mode).Заглянув внутрь LogCat, я вижу следующее исключение:

java.lang.IllegalArgumentException: File /mnt/sdcard/time_card.txt contains a path separator

Это указало мне направление ответа на этот вопрос , что, вероятно, также решит вашу проблему:

Context.openFileOutput предназначен для создания файлов, приватных для вашего приложения.Они идут в личный каталог данных вашего приложения.Вы указываете имя, а не путь

Документация для openFileOutput также указывает это на параметр имени функции:

Имяфайл для открытия;не может содержать разделители пути.

Для будущих ссылок, когда вы столкнетесь с такими проблемами, крайне важно, чтобы вы узнали, как использовать доступные вам инструменты, такие как LogCat.Без них вам будет трудно понять, что не так.Поэтому я рекомендую немного прочитать о том, как это сделать.

1 голос
/ 10 ноября 2010

Трудно сказать, когда вы не показываете, какое сообщение об ошибке вы получаете. Но я считаю, что вы забыли включить разрешение WRITE_EXTERNAL_STORAGE в ваш файл AndroidManifest.xml .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...