如何将这段Java代码转换为Kotlin for Android Studio以检索文件数据?
我在Kotlin中搜索了如何检索文件,并在Java中找到了这段代码如何将这段Java代码转换为Kotlin for Android Studio以检索文件数据?,android,kotlin,Android,Kotlin,我在Kotlin中搜索了如何检索文件,并在Java中找到了这段代码 公共空隙荷载(视图v){ FileInputStream fis=null; 试一试{ fis=openFileInput(文件名); InputStreamReader isr=新的InputStreamReader(fis); BufferedReader br=新的BufferedReader(isr); StringBuilder sb=新的StringBuilder(); 字符串文本; 而((text=br.readL
公共空隙荷载(视图v){
FileInputStream fis=null;
试一试{
fis=openFileInput(文件名);
InputStreamReader isr=新的InputStreamReader(fis);
BufferedReader br=新的BufferedReader(isr);
StringBuilder sb=新的StringBuilder();
字符串文本;
而((text=br.readLine())!=null){
sb.append(text.append(“\n”);
}
mEditText.SETEXT(某人的字符串());
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}最后{
如果(fis!=null){
试一试{
fis.close();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
}
如何用Kotlin语言写这个。。。?
到目前为止,我自己已经尝试在Kotlin中转换它,但在某些行上仍然存在一些错误(由表示)。请帮我解决这些错误
var fis = File(FILE_NAME).inputStream //<ror>Unresolved reference File
try {
fis = openFileInput(FILE_NAME)
var isr = InputStreamReader(fis)
val br = BufferedReader(isr)
val sb = StringBuilder()
var text:List<String> = br.readLines()
while ((text) != null) { //<ror>
sb.append(text).append("\n")
}
mEditText?.text(sb.toString()) //<ror>
} catch (e : FileNotFoundException) {
e.printStackTrace()
} catch (e : IOException) {
e.printStackTrace()
} finally {
if (fis != null) {
try {
fis.close()
} catch (e : IOException) {
e.printStackTrace()
}
}
}
var-fis=File(文件名)。inputStream//未解析的引用文件
试一试{
fis=openFileInput(文件名)
var isr=输入流读卡器(fis)
val br=缓冲读取器(isr)
val sb=StringBuilder()
变量文本:List=br.readLines()
while((文本)!=null){//
sb.append(文本)。append(“\n”)
}
mEditText?text(sb.toString())//
}捕获(e:FileNotFoundException){
e、 printStackTrace()
}捕获(e:IOException){
e、 printStackTrace()
}最后{
如果(fis!=null){
试一试{
财政司司长(财政司司长)
}捕获(e:IOException){
e、 printStackTrace()
}
}
}
只需将java代码粘贴到Android Studio.kt文件中,它将建议您将其转换为Kotlin。在这里你可以得到99%的kotlin代码。然后更改一些缺少的元素。我的解决方案是:
var fis = File(FILE_NAME).inputStream()
try {
fis = openFileInput(FILE_NAME)
val isr = InputStreamReader(fis)
val br = BufferedReader(isr)
val sb = StringBuilder()
var lines = br.readLines()
for (line in lines) {
sb.append(line).append("\n")
}
mEditText?.setText(sb.toString())
} catch (e : FileNotFoundException) {
e.printStackTrace()
} catch (e : IOException) {
e.printStackTrace()
} finally {
try {
fis.close()
} catch (e : IOException) {
e.printStackTrace()
}
}
这里似乎有无限循环,因此我将其更改为for each loop,以读取InputStream中的所有行
fun load(v: View?) {
var fis: FileInputStream? = null
try {
fis = openFileInput(FILE_NAME)
val isr = InputStreamReader(fis)
val br = BufferedReader(isr)
val lines = br.readLines()
val output = lines.joinToString("\n")
mEditText.setText(output)
} catch (e: FileNotFoundException) {
e.printStackTrace()
} catch (e: IOException) {
e.printStackTrace()
} finally {
try {
fis?.close()
} catch (e: IOException) {
e.printStackTrace()
}
}
}
这应该相当合理。请注意,if((text=br.readLine()!=null){
不能像在Kotlin中那样直接编写,但是您可以用替换它,而(true){break;
如果您使用的是
,则不需要手动close()
。使用{
我知道…我已经这样做了,但它不起作用…这是我在这里发布的第一个问题~
File(FILE_NAME).readLines().fold(StringBuilder()){ builder, next ->
builder.appendln(next)
}.also {
mEditText.setText(it.toString())
}
File(FILE_NAME).readLines().fold(StringBuilder()){ builder, next ->
builder.appendln(next)
}.also {
mEditText.setText(it.toString())
}