Файл существует, его нельзя прочитать, указав путь стандартным образом, идентичные строки не совпадают - Groovy - PullRequest
1 голос
/ 10 февраля 2011

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

Вот некоторый диагностический код и результаты:

def rootPath = "x:/"
def filePath

files.each
{

    filePath = rootPath + it
    File xmlFile = new File(filePath)
    println xmlFile.canRead()    //returns : false
    println xmlFile.exists()     //returns : false

    xmlFile = new File(new File(filePath).getParent() + "/" + new File(filePath).getName().toString())
    println xmlFile.canRead()     //returns : false


    String fileName = new File(filePath).getName()
    String parentDir = new File(filePath).getParent()
    new File(parentDir).list().each
    {
        println "|" + it + "|" + fileName + "|"
               //returns |PreUpload_140111-192158.xml|PreUpload_140111-192158.xml|

        println it.toString().equals(fileName)
               //returns false!!

        println "Can Read : " + new File(parentDir + "/" + it.toString()).canRead()
               //returns true
    }
}

1 Ответ

0 голосов
/ 10 февраля 2011

Получаете ли вы те же результаты с этим очищенным кодом?

def rootPath = "x:/"

files.each { f ->
  File xmlFile = new File( rootPath, f )
  String filename = xmlFile.name
  File parentDir = xmlFile.parent

  parentDir.list().each { f2 ->
    // Does this still print |PreUpload_140111-192158.xml|PreUpload_140111-192158.xml|
    println "|$f2|$fileName|"

    // Does this still print false?
    println( f2 == fileName )

    boolean canRead = new File( parentDir, f2 ).canRead()

    // still prints true ?
    println "Can Read : $canRead"
  }
}

[Изменить]

Итак, похоже, что проблема была в CR символах в конце строки в коллекции files

Не уверен, как заполняется переменная files, но что-то где-то нужно trim(); -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...