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

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

14.01.2021, 06:06. Показов 1467. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru