Не удается разобрать строку в файл в Kotlin

#java #kotlin #intellij-idea #error-handling #compiler-errors

#java #kotlin #intellij-идея #обработка ошибок #ошибки компилятора

Вопрос:

Это базовый скрипт, в котором вы вводите файл в качестве одного из аргументов и, основываясь на его расширении, он выполняет его с помощью другой программы. Это не полный код, это просто код, который выдает мне ошибку:

 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

Комментарии:

1. Не работает, потому что вам нужен полный путь к каталогу, создайте файл и жестко укажите полный путь, если он работает из-за этого.

2. @cutiko Имя файла является одним из аргументов в функции main. Я не хочу ее жестко кодировать, я хочу ввести ее в качестве одного из аргументов

3. @cutiko запускает скрипт.kt:13:35: ошибка: неразрешенная ссылка: разбор значения filenameString = File.parse(filename)

4. Я не говорю, чтобы она была жестко запрограммирована как в рабочей среде, я говорю жестко, чтобы вы могли свести ошибку к одной причине. Я показываю вам один из способов отладки вашей проблемы. Жестко запрограммируйте это, и если это не сработает, вы знаете, почему. Следующим шагом является получение каталога проекта программно. Имя файла отличается от пути к файлу. В противном случае, если он продолжит сбой, тогда есть другая проблема

5. @cutiko Спасибо, но моя проблема в том, что я не могу разобрать имя файла в строку. Я искал ответы, но не могу их найти. Кажется, ни у кого не было моей проблемы

Ответ №1:

Ты будешь пинать себя … 🙂

Чтобы создать объект File, вы просто вызываете его конструктор, например File("/path/to/myFile") . (Есть другие конструкторы, которые позволяют вам указывать каталог и имя файла отдельно или URI.)

Файл — это абстрактное представление имени файла; оно может быть абсолютным (начиная с / или независимо от корня вашей файловой системы) или относительным (к текущему каталогу). Файл даже не должен существовать.

Конечно, если нет, то вы получите сообщение об ошибке при попытке создать для него средство чтения в следующей строке. (Я уверен, что вы будете обрабатывать ошибки ввода-вывода при преобразовании этого в производственный код!)

Kotlin предоставляет другие способы чтения файла; взгляните на функции расширения, такие как File.useLines, File.readLines и File.forEachLine, которые делают это еще проще.

Комментарии:

1. Теперь я нашел решение. Спасибо за поддержку!