Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Posternac
0 / 0 / 0
Регистрация: 15.08.2013
Сообщений: 6
#1

Запись файла не могу разобраться - Программирование Android

20.08.2013, 13:25. Просмотров 696. Ответов 1
Метки нет (Все метки)

Проблема в следующем: с одного аппарата на другой передаю через bluetooth xml файл, вроде что то в поток передается из потока читается и пишется, но немогу понять что. Т.к. посмотреть его не знаю как (отладка не на эмуляторе). Прочитать я его потом не могу, значить если что то и пишется, то явно не то что надо.
Самое интересное, что он не затирает старый файл, потому что при считывании его в массив, выводятся старые данные. (запись и чтение происходят в разных Activity). Я только начинаю постигать программирование под андроид, помогите разобраться ))

Вот передача файла с первого девайса:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
public boolean manageConnectedSocket(BluetoothSocket socket) {
        
        /** создаем временные переменные */
        FileInputStream tmpIn = null;
        OutputStream tmpOut = null;
 
        /** создаем входящий поток из файла */
        try {
            tmpIn = context.openFileInput(ATRIBUTE_FILENAME);
        } catch (FileNotFoundException e) {
            Log.e("ошибка_вх_потока", e.getLocalizedMessage());
            return false;
        }
 
        /** создаем исходящий поток */
        try {
            tmpOut = socket.getOutputStream();
        } catch (IOException e) {
            Log.e("ошибка_создания_исх_потока", e.getLocalizedMessage());
            return false;
        }
 
        /** присваеваем значения временных переменных постоянным */
        FileInputStream in = tmpIn;
        OutputStream out = tmpOut;
 
        /** читаем данные из потока файла и пишем в исходящий поток */
        int i;
        try {
            while ((i = in.read()) != -1) {  
                out.write(i);
            }
        } catch (IOException e) {
            Log.e("ошибка_чтения_вх_потока", e.getLocalizedMessage());
            return false;
        }
 
        /** закрываем входящий поток */
        try {
            in.close();
        } catch (IOException e) {
            Log.e("ошибка_закрытия_вх_потока", e.getLocalizedMessage());
            return false;
        }
        
        /** закрываем исходящий поток */
        try {
            out.close();
        } catch (IOException e) {
            Log.e("ошибка_закрытия_исх_потока", e.getLocalizedMessage());
            return false;
        }
        
        return true;
    }
Вот чтение и запись в файл на втором:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
public void manageConnectedSocket() {
 
        /** создаем временные переменные */
        InputStream in = null;
        FileOutputStream out = null;
 
        /** создаем исходящий поток записи в файл */
        try {
            out = mContext.openFileOutput(ATRIBUTE_FILENAME,
                    Context.MODE_PRIVATE);
        } catch (FileNotFoundException e) {
            Log.e("ошибка_исх_потока", e.getLocalizedMessage());
            return;
        }
        
        /** создаем входящий поток */
        try {
            in = mSocket.getInputStream();
        } catch (IOException e) {
            Log.e("ошибка_вх_потока", e.getLocalizedMessage());
            return;
        }
 
        /** читаем входящий поток в цикле и пишем в файл */
        //Boolean inBreak = false; // переменная для прерывания цикла
        int i = 0;
        //while (!inBreak) {
            try {
                while ((i = in.read()) != -1) {
                    out.write((char)i); 
                }
            } catch (IOException e) {
            }
            
//          try {
//              if ((i = in.read()) != -1) {
//                  inBreak = true;
//              }
//          } catch (IOException e) { 
//              inBreak = true;
//          }
            
        //}
 
        /** закрываем входящий поток */
        try {
            in.close();
        } catch (IOException e) {
            Log.e("ошибка_закрытия_вх_потока", e.getLocalizedMessage());
            return;
        }
 
        /** закрываем исходящий поток */
        try {
            out.flush();
            out.close();
        } catch (IOException e) {
            Log.e("ошибка_закрытия_исх_потока", e.getLocalizedMessage());
            return;
        }
 
    }
 
    /** отмена ожидания сокета */
    public void cancel() {
        try {
            mSocket.close();
        } catch (IOException e) {
        }
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2013, 13:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запись файла не могу разобраться (Программирование Android):

Не могу разобраться с setImageDrawable - Программирование Android
Пытаюсь программно в классе прописать элементу ImageView картинку. Изображение хранится в ресурсах проекта в папке drawable-hdpi. Пишу: ...

Не могу разобраться с вёрсткой - Программирование Android
Не получается разделить между двумя кнопками layout. Вот XML: <RelativeLayout...

Не могу разобраться с потоками - Программирование Android
Здравствуйте. Никак не могу понять принцип выноса задач в отдельный поток. Смысл прост: 1)есть метод который обновляет адаптер для...

Не могу разобраться в коде - Программирование Android
// создааем адаптер и настраиваем список scAdapter = new SimpleCursorAdapter(this, R.layout.item, null, from, to, 0); lvData =...

Не могу разобраться с закладками - Программирование Android
Всем привет, подскажите, как реализовать закладки. Чтобы нажав кнопку,выскакивал диалог добавить закладку и соответственно поле ввода с...

Не могу разобраться где накосячил - Программирование Android
Добрый день коллеги. Я написал свой первый проект на Android при помощи Android Studio. Данное приложение является обычным калькулятором...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
tmp_2008
0 / 0 / 0
Регистрация: 15.10.2008
Сообщений: 12
22.08.2013, 09:01 #2
Насколько я знаю, android не затирает старый файл, а добавляет инфу к нему. Т.е. при сохранении файла надо проверять, есть ли такой уже, и если есть - удалять.

Почему прочитать не можешь? В смысле, ошибка вылетает или что?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2013, 09:01
Привет! Вот еще темы с ответами:

Не могу разобраться с созданием приложения - Программирование Android
Решил заняться разработкой под Android, при создании приложения получаю кучу ошибок, что-то с ресурсами. Среда - последняя Eclipse Luna....

Не могу разобраться в логе ошибки - Программирование Android
Стопорит проект в самом начале (setContentView(R.layout.activity_main);) Не могу понять что не так ....... public class...

Загадочная разметка, не могу разобраться. - Программирование Android
Пытаюсь сделать список с элементами такого вида: Cправа - кнопка, слева: слово и под ним Progressbar. Не могу понять, как сделать...

Не могу разобраться с использованием глобальной переменной - Программирование Android
Есть два класса Class1 и Class2 соответственно. В Class1 объявляю глобальную переменную и пытаюсь использовать ее в Class2. Ничего не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru