作者:望天打股 | 来源:互联网 | 2023-06-25 12:39
我正处于Android App学习阶段的开始。我的资产文件夹中有一个.txt文件,该文件的每一行都包含字符串,就像这样-
AWOL JJ AWOL
Aaronic JJ Aaronic
Aaronical JJ Aaronical
我想做的就是将JJ
替换为NN
并保持相同。我的问题是-
- 因为我发现的所有解决方案都在谈论使用功能
File()
创建其他文件,所以有一种方法可以编辑现有文件吗?
- 如果我遵循不同网站上描述的解决方案,则无法使用
File()
访问文件,即使我创建了一个具有相同名称的空文件,也显示了file can not be found
的错误。如果文件位于assets
文件夹内或app/src
内,则无法访问。因此,我改为使用Context.assets.open()
读取原始文件,该原始文件以inputstream
的形式打开。尽管我不知道使用File()
进行写入来打开文件的其他方式。
// FOR READING FROM ORIGINAL FILE
var inputStreamLemmDict = BufferedReader(InputStreamReader(context!!.assets.open("my_file.dict"))).readLines()
// FOR WRITING TO ANOTHER FILE
File("path_to/my_file.txt").bufferedWriter().use { out ->
inputStreamLemmDict.forEach {
var eachLinesplit = it.split("\\s".toRegex())
if (eachLinesplit[1] == "NNN") {
out.write("${eachLinesplit[0]}\tNN\t${eachLinesplit[2]}\n")
}
else {
out.write("${it}\n")
}
}
感谢您的帮助。谢谢!
您好,您可以使用以下解决方案来获得所需的结果。
更新:请尝试使用此解决方案从资产中读取文件并获得结果。此解决方案未经测试。
确保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) {
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)
}