Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 14.01.2021
Сообщений: 4

Запись данных по нажатию кнопки в csv файл

14.01.2021, 06:06. Показов 1511. Ответов 6

Студворк — интернет-сервис помощи студентам
Здраствуйте уважаемые профессионалы в разработке ПО на Android Studio. дело в том что я новичок в Android Studio и до этого сам смог написать только проекты наподобие Hello World , в этом проекте я решил добиться того чтобы мои данные 3 позиций сохранялись в csv файл, по этому поводу я нашел код, с помощью которого смог записать данные в txt, я попробывал поменять вид файла на csv. Данные сохранились, но к сожалению наверху не отображается три позиции(Name, Home address, Telephone number), а также сохраненная информация не разделяется на столбцы а пишется все слитно и к тому же перезаписывается на исходный файл, что тоже не сть хорошо. на всякий случай прикладываю фото сейчас и желаемого результатаочень прошу помочь мне решить эти моменты.



(1)activity_main.xml
XML
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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
 
    <TextView
        android:id="@+id/View"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="3dp"
        android:text="Name"
        android:textSize="24sp"
        android:textStyle="bold"/>
 
 
 
    <EditText
        android:id="@+id/editcsv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/edit_csv"
        android:inputType="text" />
    <TextView
        android:id="@+id/View1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="3dp"
        android:text="home address"
        android:textSize="24sp"
        android:textStyle="bold"/>
 
    <EditText
        android:id="@+id/editcsv1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/edit_csv1"
        android:inputType="text" />
    <TextView
        android:id="@+id/View2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="3dp"
        android:text="telephone number"
        android:textSize="24sp"
        android:textStyle="bold" />
    <EditText
        android:id="@+id/editcsv2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/edit_csv2"
        android:inputType="text" />
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
 
        <Button
            android:id="@+id/saveBtn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/save_csv" />
 
 
    </LinearLayout>
 
</LinearLayout>
 
(2)strings.xml:

XML
1
2
3
4
5
6
7
8
9
10
<resources>
    <string name="app_name">ExternalStorageApp</string>
    <string name="save_csv">save</string>
    <string name="edit_csv">Please enter your name</string>
    <string name="edit_csv1">Please enter your home address</string>
    <string name="edit_csv2">Please enter your telephone number</string>
    <string name="View">Name</string>
    <string name="View1">home address</string>
    <string name="View2">telephone number</string>
</resources>
(3)MainActivity.java

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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import android.os.Bundle;
import android.os.Environment;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
 
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import android.app.ListActivity;
 
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
 
    private EditText editText, editText1, editText2;
    private Button saveBtn;
 
 
 
 
    private String fileName = "mFile.csv";
    private String filePath = "MyFileStorage";
 
    private File mFile;
  
    private String mData = "";
  
 
 
 
    @Override
 
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        // Initilization
        editText = (EditText) findViewById(R.id.editcsv);
        editText1 = (EditText) findViewById(R.id.editcsv1);
        editText2 = (EditText) findViewById(R.id.editcsv2);
 
        saveBtn = (Button) findViewById(R.id.saveBtn);
        saveBtn.setOnClickListener(this);
 
 
 
        // check external storage
        // and aviability for saving
        if (!isAvailable() || isReadOnly()) {
            // if unavailable set button  as enabled
            // for saving and reading
 
            saveBtn.setEnabled(false);
 
        } else {
            // if available get files for ExternalStorage
            mFile = new File(getExternalFilesDir(filePath), fileName);
            
        }
 
    }
 
    // check external storage for reading
    private static boolean isReadOnly() {
        String storageState = Environment.getExternalStorageState();
        return Environment.MEDIA_MOUNTED_READ_ONLY.equals(storageState);
    }
 
    // check availability for external storage
    private static boolean isAvailable() {
        String storageState = Environment.getExternalStorageState();
        return Environment.MEDIA_MOUNTED.equals(storageState);
    }
 
    // simple method for pop up windows
    public void showToast(String message) {
        Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
    }
 
    @Override
    public void onClick(View v) {
 
                // entered datas for  mData
                mData = "" ;
                
                try {
 
               
                    fos.write(editText.getText().toString().getBytes());
                    fos.write(editText1.getText().toString().getBytes());
                    fos.write(editText2.getText().toString().getBytes());
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                showToast("Files was saved");
 
        }
    }
Миниатюры
Запись данных по нажатию кнопки в csv файл   Запись данных по нажатию кнопки в csv файл  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.01.2021, 06:06
Ответы с готовыми решениями:

Запись данных в XML файл из TextBox по нажатию кнопки
Помогите пожалуйста. Как можно сделать запись строки в XML файл,в определенный тэг, из текстбокса?Если не сложно приведите пример кода:-[

Запись в файл по нажатию кнопки
Не происходит запись в файл . Файл создаётся , но строка в нём так и не появляется: LPCVOID buf =&quot;hello&quot;; switch...

Запись в текстовый файл по нажатию кнопки
Подскажите, как в MS Visual C++ для приложения Windows Forms сделать так, чтобы при нажатии кпонки, находящейся на форме, происходила...

6
0 / 0 / 0
Регистрация: 14.01.2021
Сообщений: 4
14.01.2021, 06:18  [ТС]
извиняюсь забыл скопировать одну строчку кода в java.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  @Override
    public void onClick(View v) {
 
                // entered datas for  mData
                mData = "" ;
               
                try {
 
                    FileOutputStream fos = new FileOutputStream(mFile); // <---
                    
                    fos.write(editText.getText().toString().getBytes());
                    fos.write(editText1.getText().toString().getBytes());
                    fos.write(editText2.getText().toString().getBytes());
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                showToast("Files was saved");
 
        }
    }
0
76 / 52 / 26
Регистрация: 23.01.2019
Сообщений: 134
14.01.2021, 07:17
Привет.
Чтоб информация разделялась на столбцы, нужно при записи каждого поля добавлять в конец разделитель: запятую или точку с запятой.
И заглавную строку нужно записать в файл сразу после создания файла. Из ниоткуда заголовок не появится.
1
0 / 0 / 0
Регистрация: 14.01.2021
Сообщений: 4
14.01.2021, 09:17  [ТС]
yatrim, Спасибо большое вам за ответ!!
Вот что у меня получилось

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
@Override
    public void onClick(View v) {
 
                // entered datas for  mData
                mData = "" ;
 
                try {
 
 
                    FileOutputStream fos = new FileOutputStream(mFile);
 
                    fos.write(editText.getText().toString().getBytes());
                    //comma
                    fos.write(",".getBytes());
                    fos.write(editText1.getText().toString().getBytes());
                    //comma
                    fos.write(",".getBytes());
                    fos.write(editText2.getText().toString().getBytes());
                    fos.close();
 
 
                } catch (IOException e) {
                    e.printStackTrace();
                }
 
                showToast("File was saved");
 
        }
    }
Но все еще остается проблема с тем что перезаписывает данные, а не сохраняет рядом. Пожалуйста помогите
0
76 / 52 / 26
Регистрация: 23.01.2019
Сообщений: 134
14.01.2021, 13:52
Но все еще остается проблема с тем что перезаписывает данные, а не сохраняет рядом. Пожалуйста помогите
Вы имеете ввиду, что вам нужно не перезаписывать весь файл, а добавлять строки к уже существующему?
0
0 / 0 / 0
Регистрация: 14.01.2021
Сообщений: 4
16.01.2021, 09:10  [ТС]
yatrim, Да, мне необходимо, чтобы данные не перезаписывались а добавлялись
0
76 / 52 / 26
Регистрация: 23.01.2019
Сообщений: 134
16.01.2021, 14:37
Для этого нужно FileOutputStream создавать с параметром append равным true.

Java
1
  FileOutputStream fos = new FileOutputStream(mFile, true);
Я бы вынес в отдельный метод запись строки в файл
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
     private void addRecord(String field1, String field2, String field3){
        String COMMA_CHAR = ",";
        String s = field1 + COMMA_CHAR + 
                   field2 + COMMA_CHAR + 
                   field3 + "\r\n";
        
        try {
            FileOutputStream fos = new FileOutputStream(mFile, true);
            fos.write(s.getBytes());
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
 
        showToast("Record was saved");
    }
Когда нужно будет добавить запись делай вызов
Java
1
  addRecord("Mary", "New-York", "123456789");
Для того чтоб, добавить строку заголовка, при запуске приложения проверь существования файла и если его нет, то добавь заголовок
Java
1
2
3
4
5
        mFile = new File(getExternalFilesDir(filePath), fileName);
        
        if(!mFile.exists()){
            addRecord("NAME", "CITY", "PHONE");
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.01.2021, 14:37
Помогаю со студенческими работами здесь

Запись содержимого TextBox в файл по нажатию кнопки
Помогите пожалуйста с записью содержимого в текст-боксах в текстовый файл, обшарил интернет ничего не работает. Вот код: #pragma once ...

Запись данных из JTextField в БД MySQL по нажатию кнопки
Возникла следующая ситуация: К примеру, имеем мы два текстовых поля: Номер группы (long), Факультет (String). Как передать значения из этих...

Запись данных в БД посредством JTextField по нажатию кнопки
Сразу к делу. Есть БД в SQL все подключается, инсталлируется и даже удаляется. При добавлении записей посредство JPanel, на которой есть...

Запись данных из формы в таблицу по нажатию кнопки
Здравствуйте, помогите пожалуйста сделать форму, в ней есть несколько полей и соответствующие им надписи сверху, кнопка...

Запись данных из формы в таблицу по нажатию кнопки
Добрый день. Помогите пожалуйста сделать форму(КурортыФорма) , в ней есть несколько полей и соответствующие им надписи и таблица...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru