【问题标题】:Can't parse String to File in Kotlin无法在 Kotlin 中将字符串解析为文件
【发布时间】:2021-02-28 00:00:25
【问题描述】:

这是一个基本脚本,您可以在其中输入一个文件作为参数之一,并根据它的扩展名使用不同的程序执行它。 这不是完整的代码,这只是给我一个错误的代码:

package com.pavlos.efstathiou.runScript

import java.io.BufferedReader
import java.io.File
import java.util.logging.Level.parse

fun main(args: Array<String>) {
    val filename: Any = args[0]
    if (args.isEmpty()) println("No arguments provided")
    if (args.size > 2) println("Too many arguments provided")
    fun read() {
        val filenameString = File.parse(filename) // I don't know what function to use to parse the filename String
        val reader: BufferedReader = filenameString.bufferedReader()
        val inputString = reader.use { it.readText() }
        println("Contents of file: $inputString")

    }
}

唯一的问题是我无法将函数的参数(字符串)解析为文件名。 对不起,我是 Kotlin 的初学者,代码不好

【问题讨论】:

  • 无法正常工作,因为您需要目录的完整路径、创建文件并硬编码完整路径,如果它可以工作,就是因为这个原因。
  • @cutiko 文件名是主函数中的参数之一。我不想硬编码我想输入它作为参数之一
  • @cutiko runSript.kt:13:35:错误:未解决的参考:解析 val filenameString = File.parse(filename)
  • 我并不是说将其硬编码为生产环境,我说的是硬编码,这样您就可以将错误减少为单一原因。我向您展示了一种调试问题的方法。硬编码它,如果它没有失败,那么你知道为什么。下一步是以编程方式获取项目目录。文件名与文件路径不同。否则,如果它一直失败,那么还有其他问题
  • @cutiko 谢谢,但我的问题是我无法将文件名解析为字符串。我已经搜索了答案,但我找不到任何答案。似乎没有人遇到我的问题

标签: java kotlin intellij-idea error-handling compiler-errors


【解决方案1】:

你会踢自己的……:-)

要创建一个File 对象,您只需调用它的constructor,例如File("/path/to/myFile")。 (还有其他构造函数可以让您分别指定目录和文件名,或 URI。)

文件是文件名的抽象表示;它可以是绝对的(以/ 或文件系统的根目录开头),也可以是相对的(相对于当前目录)。该文件甚至不需要存在。

当然,如果不是,那么当您尝试在下一行中为其创建阅读器时,您会收到错误消息。 (我敢肯定,当您将其转换为生产代码时,您处理 I/O 错误!)

Kotlin 提供了其他读取文件的方法;看看像File.useLinesFile.readLinesFile.forEachLine这样的扩展函数,它们会更容易。

【讨论】:

  • 我现在找到了解决方案。感谢您的支持!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
  • 2016-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多