2011-02-10 2 views
1

Groovy(Windows)のファイルを読むのに非常に不満な問題があります。私はかなりの時間をかけて根本原因を突き止めようとしました。しかし、私は2つの同一のファイル名に一致していないので、それを煮詰めているので、私は冗談です!ファイルが存在し、標準的な方法でパスを与えることができません。同じ文字列が一致しません - Groovy

ここではいくつかの診断コードと結果があります:

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 
    } 
} 
+0

4行目で 'each'に' files'を使用しているのは何ですか? –

+0

'ファイル'は以下のような部分パス文字列のリストです: 'Rel_2011.01/V112V80V90V100Mk8/2011.01.259/PC_12_V112_3MW_50HZ_Target_20110114-122312/PreUpload_140111-120351.xml' –

答えて

0

あなたはこのクリーンアップコードで同じ結果を得るのですか?

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" 
    } 
} 

[編集]だから、

、問題がfilesコレクション内の文字列の末尾の文字がCR

わからなかったことをどのように見えるかの変数files入力されていますが、別の場所にはtrim() ;-)が必要です。

+0

//これはまだ印刷されますか?PreUpload_140111- 192158.xml | PreUpload_140111 -192158.xml | 'println" | $ f2 | $ fileName | " ' //はい //これでもfalseが印刷されますか? 'println(f2 == fileName) ' //はい //まだ印刷されていますか? 'println"は読むことができます:$ canRead "' //はい –

+0

コードは可能な限り明確になるよう意図的に「汚れています」。コードは問題を示すためのものです。私は実際にファイルの親ディレクトリ内のすべてのファイルを読み込みたいとは思っていませんが、ファイルを実際に読むことができるようにすることを示したかっただけです。私はちょうど "ファイル"の各ファイルを読んでみたいです。 ご協力ありがとうございます。 //また: は 'のprintln xmlFile.canRead()' //はまだあなたを取得し、 ' "$ f2.class.name $ fileName.class.name"'のprintlnを何 –

+0

偽ですか?また、最初のコメントにスペースがあります。 'PreUpload_140111-192158.xml | PreUpload_140111-192158.xml |'これは事故ですか?そうでない場合、私は私たちの答えがあると思う... –

関連する問題