Android: не могу записать в текстовый файл - PullRequest
0 голосов
/ 24 июля 2010

Моя программа содержит файл с именем «size.txt», который содержит только слово «15».Если пользователь выбирает значение из счетчика, скажем, 17, то выбранное значение должно быть сохранено в файле и заменить «15».

Я добавил разрешение для программы

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

Но почему-то не могу записать выбранное значение в файл.Вот мой код

try {
    FileOutputStream fos = openFileOutput("size", Context.MODE_PRIVATE);
    OutputStreamWriter osw = new OutputStreamWriter(fos);
    osw.write("17");
    osw.flush();
    osw.close();
} catch (java.io.IOException e) {
//do something if an IOException occurs.
}

Кто-нибудь может мне помочь?Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 24 июля 2010

Возможно, вам следует прочитать это, прежде чем искать способ исправить свой код.

Согласно Общие настройки |Учебник для разработчиков Android (часть 13) от Sai Geetha MN,

Многие приложения могут предоставлять способ захвата пользовательских настроек в настройках конкретного приложения или действия.Для поддержки этого Android предоставляет простой набор API.

Предпочтения обычно представляют собой пары имя-значение.Они могут храниться в виде «общих настроек» для различных действий в приложении (обратите внимание, что в настоящее время они не могут быть общими для всех процессов)Или это может быть что-то, что необходимо сохранить для определенного действия.

  1. Общие настройки: общие настройки могут использоваться всеми компонентами (действиями, службами и т. Д.).приложения.

  2. Предпочтения, связанные с действием: эти предпочтения могут использоваться только в упражнении и не могут использоваться другими компонентами приложения.

Общие настройки:

Управление общими настройками осуществляется с помощью метода getSharedPreferences класса Context.Предпочтения хранятся в файле по умолчанию (1), или вы можете указать имя файла (2), которое будет использоваться для ссылки на предпочтения.

(1) Вот как вы получаете экземпляр, когда вы указываетеимя файла

public static final String PREF_FILE_NAME = "PrefFile";
   SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);

MODE_PRIVATE - режим работы для предпочтений.Это режим по умолчанию и означает, что созданный файл будет доступен только вызывающему приложению.Поддерживаются два других режима: MODE_WORLD_READABLE и MODE_WORLD_WRITEABLEMODE_WORLD_READABLE другое приложение может прочитать созданный файл, но не может изменить его.В случае MODE_WORLD_WRITEABLE другие приложения также имеют права на запись для созданного файла.

(2) Рекомендуемый способ - использовать в режиме по умолчанию, без указания имени файла

SharedPreferences preferences = PreferencesManager.getDefaultSharedPreferences(context);

Наконец, когда у вас есть экземпляр настроек, вот как вы можете извлечь сохраненные значения из настроек:

 int storedPreference = preferences.getInt("storedInt", 0);

К сохранить значения в файле настроек SharedPreference.Editor объект должен быть использован.Editor - это вложенный интерфейс класса SharedPreference.

SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();

Редактор также поддерживает такие методы, как remove() и clear() для удаления значения предпочтения из файла.

Настройки активности:

Общие настройки могут использоваться другими компонентами приложения.Но если вам не нужно делиться настройками с другими компонентами и хотите, чтобы действия были частными.Вы можете сделать это с помощью метода действия getPreferences().Метод getPreference использует метод getSharedPreferences() с именем класса активности для имени файла настроек.

Ниже приведен код для получения настроек

SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);

Код для храненияЗначения также такие же, как и в случае общих предпочтений.

SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();

Вы также можете использовать другие методы, такие как сохранение состояния активности в базе данных.Примечание. Android также содержит пакет под названием android.preference.Пакет определяет классы для реализации пользовательского интерфейса предпочтений приложения.

Чтобы увидеть еще несколько примеров, ознакомьтесь с публикацией Android Data Storage на сайте разработчиков.

0 голосов
/ 04 августа 2011
*package com.example;

import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import android.app.Activity;
import android.content.res.AssetManager;
import android.content.res.Resources;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class GetFromURLActivity extends Activity 
{   
    TextView txtContent;
    String path;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        try {
            //this is the file you want to download from the remote server

            /*path ="http://localhost:82/TextureTest01.apk";*/
            path ="http://10.0.2.2:82/my.txt";
            //this is the name of the local file you will create

            /*String targetFileName = "mynew"; // Omit extension.
            boolean eof = false;*/
            URL u = new URL(path);

            HttpURLConnection c = (HttpURLConnection) u.openConnection();

            c.setRequestMethod("GET");
            c.setDoOutput(true);
            c.connect();

            InputStream in = c.getInputStream();


            Log.e("value",in.toString());

            //Gets the instance of the asset manager
            AssetManager mngr=getAssets();

            //Resources resources = new Resources();
            //resources.getAssets().open("my.txt");
            //FileOutputStream f = new FileOutputStream(new File("c:\\" + targetFileName));

            /*FileOutputStream f = this.openFileOutput(targetFileName,
                    this.MODE_WORLD_READABLE);*/

            ByteArrayOutputStream bo = new ByteArrayOutputStream();

            byte[] buffer = new byte[1024];
            in.read(buffer); //  Read from Buffer.
            bo.write(buffer); // Write Into Buffer.

            /*int len1 = 0;
            while ( (len1 = in.read(buffer)) != -1 ) 
            {
                //f.write(buffer,0, len1);
                bo.write(buffer,0, len1); // Write Into Buffer.
            }*/
            txtContent =(TextView)findViewById(R.id.textview);
            txtContent.setText(bo.toString()); 
            bo.close();
            //f.close();

        } 
        catch (MalformedURLException e) {
             e.printStackTrace();
            //txtContent.setText(e.getMessage().toString());
        } catch (ProtocolException e) {
            e.printStackTrace();
            //txtContent.setText(e.getMessage().toString());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            //txtContent.setText(e.getMessage().toString());
        } catch (IOException e) {
            e.printStackTrace();
            //txtContent.setText(e.getMessage().toString());
        }
    }
    String ReadFile(InputStream is)
    {
        ByteArrayOutputStream bo=new ByteArrayOutputStream();

        byte [] buffer=new byte[1024];

        try {
            is.read(buffer);
            bo.write(buffer);

            bo.close();
            is.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return bo.toString();
    }
}
// My Email Id is muhammad.mubashir.bscs@gmail.com*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...