1

.xlsxそのため、ファイルのディレクトリを調べて、最後に作成されたファイルを選択するコードを書いています。これは単純な作業ですが、特定のオブジェクトのNameプロパティで少し奇妙なことが起こっており、これが発生するケースがさらに多くなる可能性があります。FileInfo

これが私のコードです:

        DirectoryInfo di = new DirectoryInfo(FolderPath);
        FileInfo[] FileArray = di.GetFiles("*.xlsx", SearchOption.AllDirectories);
        if (FileArray.Count() != 0) 
        {
            DateTime latestDate = DateTime.MinValue;
            string FileName = String.Empty;
            foreach (FileInfo File in FileArray)
            {
                if (File.CreationTime > latestDate)
                {
                    latestDate = File.CreationTime;
                    FileName = File.FullName;  
                }
            }
        }

FileName、最新のファイルに情報を照会して表示するために使用するため、重要です。ただし、Name特定の .xlsx ファイル (おそらくそれ以上) のプロパティは、~$File.xlsx実際にはファイル名が実際には .xlsx の場合、このように表示されますFile.xlsx。これにより、FullNameプロパティにもこれらの文字が含まれます。

これを修正する方法はありますか?何がこれを引き起こしますか?

4

2 に答える 2

4

xlsx ファイルを開くと、Excel で "~$" が前に付いた同じ名前の隠しファイルが作成されます。したがって、ディレクトリのコンテンツを取得するときにこれらの Excel ファイルのいずれかが開いている場合は、一時ファイルも取得されます。

隠しファイルを除外するフィルターを追加すると、問題が解決されます。

例:

FileAttributes attributes = File.GetAttributes(path);

if((attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
{
    // Hidden file, just skip it
}

http://msdn.microsoft.com/en-us/library/system.io.file.getattributes.aspxから

于 2013-04-25T14:15:03.423 に答える
1

~$ファイルが Microsoft Office で使用される一時ファイルであることを示します。詳細については、こちらを参照してください。

于 2013-04-25T14:15:14.383 に答える