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

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
kotzen8989
Сообщения: 1
Зарегистрирован: 14 янв 2021, 07:19

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

Сообщение kotzen8989 » 14 янв 2021, 07:26

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






(1)activity_main.xml



<?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:



<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



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 {



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");

}
}
Вложения
ожидаемый результат
ожидаемый результат
csv file (changed).jpg (179.37 КБ) 633 просмотра
Исходный файл при записи данных как пример
Исходный файл при записи данных как пример
csv file.jpg (176.38 КБ) 633 просмотра

Ответить