Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Android Studio中使用Kotlin编写/编辑txt文件?_Java_Android_Android Studio_Kotlin - Fatal编程技术网

Java 如何在Android Studio中使用Kotlin编写/编辑txt文件?

Java 如何在Android Studio中使用Kotlin编写/编辑txt文件?,java,android,android-studio,kotlin,Java,Android,Android Studio,Kotlin,我正处于Android应用程序学习阶段的开始。我的资产文件夹中有一个.txt文件,每行由字符串组成,如下所示- AWOL JJ AWOL Aaronic JJ Aaronic Aaronical JJ Aaronical 我想做的就是用NN替换JJ,并保持其余部分不变。我的问题是- 有没有办法编辑已经存在的文件,因为我找到的所有解决方案都是使用函数file()创建其他文件 如果我遵循不同网站上描述的解决方案,我无法使用file()访问文件,这表明即使我创建了同名的空文件,也无法

我正处于Android应用程序学习阶段的开始。我的资产文件夹中有一个.txt文件,每行由字符串组成,如下所示-

AWOL    JJ  AWOL
Aaronic JJ  Aaronic
Aaronical   JJ  Aaronical
我想做的就是用
NN
替换
JJ
,并保持其余部分不变。我的问题是-

  • 有没有办法编辑已经存在的文件,因为我找到的所有解决方案都是使用函数
    file()
    创建其他文件
  • 如果我遵循不同网站上描述的解决方案,我无法使用
    file()
    访问文件,这表明即使我创建了同名的空文件,也无法找到
    文件。如果文件位于
    assets
    文件夹内或
    app/src
    内,则无法访问该文件。因此,我使用
    Context.assets.open()
    读取原始文件,该文件以
    inputstream
    的形式打开。虽然我不知道使用
    file()
    进行写入来打开文件的其他方法

  • 感谢您的帮助。谢谢大家!

    您好,您可以使用以下解决方案来实现所需的结果

    更新:请尝试此解决方案从资产读取文件并获得结果。此解决方案未经测试

    确保yourfilename.txt位于资产文件夹下

    try {
    val inputStream:InputStream = assets.open("yourfilename.txt")
          val text = inputStream.bufferedReader().use{it.readText()}
    
            println(text)
            text = text.replace("JJ".toRegex(), "NN")
            f.writeText(text)
    }catch (e:Exception){
            Log.d(TAG, e.toString())
        }
    
    fun main(args:Array){
    变量行号=0
    var newString=“”
    文件(“src/dataFile”).forEachLine{
    ++行号
    println(“$lineNumber:$it”)
    newString=it.replace(“JJ”、“NN”)
    println(“新字符串:$newString”)
    }
    文件(“src/dataFile”).writeText(新闻字符串)
    }
    
    您无法编辑APK内容表单本身。因此,如果文件在资源中-您无法编辑它。好的,那么我应该将文件放在哪里进行编辑?。我读过关于把它们放在app/src的文章,这取决于你把它们放在哪里。关于外部或内部存储。好的,那么您将如何处理这个书写问题呢?。你会把文件放在哪里?如果你只想用
    NN
    替换
    JJ
    ,那么使用
    String要容易得多。替换(“JJ”,“NN”)
    (我知道是java,不是kotlin,但转换应该不会有问题)Hi Sumit,谢谢你的回答。这听起来很合理,但问题是
    文件(File)
    ,我无法通过在此处提供
    文件的路径来访问
    文件,这是
    文件
    函数所必需的。所以,我的问题是,我应该把这个
    文件
    放在android studio的哪个文件夹中,这样我就可以通过在
    f.writeText
    中给出路径来访问它了。很抱歉,这是旧的解决方案。请检查@markB的新解决方案是否有效。
    try {
    val inputStream:InputStream = assets.open("yourfilename.txt")
          val text = inputStream.bufferedReader().use{it.readText()}
    
            println(text)
            text = text.replace("JJ".toRegex(), "NN")
            f.writeText(text)
    }catch (e:Exception){
            Log.d(TAG, e.toString())
        }
    
    fun main(args: Array<String>) {
    var lineNumber = 0
    var newString = ""
    File("src/dataFile").forEachLine {
        ++lineNumber
        println("$lineNumber: $it")
        newString = it.replace("JJ", "NN")
        println("New string : $newString")
    }
    File("src/dataFile").writeText(newString) 
    }