Невозможно занести больше 1 раза данные

Программа отвечает за авторизацию и регистрацию. Зарегистрировать можно только 1 пользователя после чего выбивает Toast "Файл содержит неправильное количество данных". Регистрация пользователя и сохранение его данных происходит в классе Register, а чтение данных и проверка с введенными при попытке входа в классе MainActivity


import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.io.IOException

class MainActivity : AppCompatActivity() {

    @SuppressLint("SuspiciousIndentation")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        enableEdgeToEdge()
        setContentView(R.layout.activity_main)
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }
        val regbtn: Button = findViewById(R.id.reg)
        val enterButton: Button = findViewById(R.id.enter)
        val MloginEditText: EditText = findViewById(R.id.editLogin)
        val MpasswordEditText: EditText = findViewById(R.id.editPassword)
        val MdostupEditText: EditText = findViewById(R.id.editDostup)

        suspend fun read(context: Context,filename:String) = withContext(Dispatchers.IO){
            try {
                context.openFileInput(filename).bufferedReader().useLines { lines ->
                    lines.fold(""){ acc: String, s: String ->
                        "$acc\n$s"
                    }
                }
            }
            catch (e: IOException){
                e.printStackTrace()
            }
        }

        suspend fun chekdata(context: Context, filename: String, registerInstance: Register) {
            val fileData = read(this, filename).toString()
            Log.d("File Content",fileData)
            if (fileData != null) {
                val lines = fileData.split(",").map { it.trim() }
                if (lines.size == 3) {
                    val fileLogin = lines[0]
                    val filePassword = lines[1]
                    val fileDostup = lines[2]

                    val MainActivity_login = MloginEditText.text.toString()
                    val MainActivity_password = MpasswordEditText.text.toString()
                    val MainActivity_dostup = MdostupEditText.text.toString()

                    if (MainActivity_login == fileLogin && MainActivity_password == filePassword && MainActivity_dostup == fileDostup && fileDostup == "A") {
                        val intent_admin = Intent(this, Admin::class.java)
                        startActivity(intent_admin)
                    }
                    else if (MainActivity_login == fileLogin && MainActivity_password == filePassword && MainActivity_dostup == fileDostup && fileDostup == "U") {
                        val intent_user = Intent(this, User::class.java)
                        startActivity(intent_user)
                    }
                    else {
                        Toast.makeText(this@MainActivity,"Пользователь не зарегистрирован",Toast.LENGTH_SHORT).show()
                    }
                }
                else {
                    Toast.makeText(this@MainActivity, "Файл содержит неправильное количество данных", Toast.LENGTH_SHORT).show()
                }
            } else {
                Toast.makeText(this@MainActivity, "Ошибка чтения файла", Toast.LENGTH_SHORT).show()
            }
        }
        regbtn.setOnClickListener {
            val intent_reg = Intent(this, Register::class.java)
            startActivity(intent_reg)
        }

                val registerInstance = Register()
        enterButton.setOnClickListener {
            try {
                lifecycleScope.launch{
                    chekdata(this@MainActivity, "My Save.txt", registerInstance)
                }
            } catch (e: IOException) {
                Toast.makeText(this@MainActivity, "Обработка исключения IOException", Toast.LENGTH_SHORT).show()
            } catch (e: Exception) {
                Toast.makeText(this@MainActivity, "Обработка исключения Exception", Toast.LENGTH_SHORT).show()
            }
        }
    }
}

import android.annotation.SuppressLint
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import java.io.File
import android.content.Context
import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.io.IOException
import kotlin.coroutines.CoroutineContext

class Register : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.activity_register)
        setupWindowInsets()


        val loginEditText: EditText = findViewById(R.id.editREGLogin)
        val passwordEditText: EditText = findViewById(R.id.editREGPassword)
        val accessLevelEditText: EditText = findViewById(R.id.editREGDostup)
        val registerButton: Button = findViewById(R.id.regbutton)
        val filename = "My Save.txt"

        registerButton.setOnClickListener {
            val login = loginEditText.text.toString()
            val password = passwordEditText.text.toString()
            val accessLevel = accessLevelEditText.text.toString()

            val fileContent = "$login,$password,$accessLevel"

            val file = File(this.filesDir, filename)

            try {
                if (!file.exists()) {
                    file.createNewFile()
                }
                lifecycleScope.launch {
                    save(this@Register,fileContent)
                }
                Toast.makeText(this, "Данные сохранены", Toast.LENGTH_SHORT).show()

            } catch (e: Exception) {
                Toast.makeText(this, "Ошибка сохранения данных: ${e.message}", Toast.LENGTH_SHORT).show()
                e.printStackTrace()
            }

        }
    }

    private fun setupWindowInsets() {
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }
    }

    private suspend fun save(context: Context, fileContent: String) {
        withContext(Dispatchers.IO) {
            val fileOutputStream = context.openFileOutput("My Save.txt", Context.MODE_APPEND).use {
                it.write("$fileContent\n".toByteArray())
            }
        }
    }


}

Ответы (0 шт):