0

同じフォルダーに 2 つの XML ファイルを作成しようとしています。何らかの理由で、最初のものは作成されますが、2 番目のものは作成されません。

2 番目のファイルを作成しようとしたときに最初のファイルがまだ作成されているため、後者は失敗する可能性がありますか?

コードでエラーは発生しません:

if (File.Exists(FileNameTextBox.Text + ".AA.xml"))
{
    MessageBox.Show("Already exists. renaming to *.old" + Environment.NewLine +
                    "if there is already an *.old file, this will be deleted.");
    if (File.Exists(FileNameTextBox.Text + ".AA.xml.old"))
    {
        File.Delete(FileNameTextBox.Text + ".AA.xml.old");
    }
    File.Move(FileNameTextBox.Text + ".AA.xml", FileNameTextBox.Text + ".AA.xml.old");
}
if (!File.Exists(FileNameTextBox.Text + ".AA.xml"))
{
    XmlTextWriter textWritter = new XmlTextWriter(FileNameTextBox.Text + ".AA.xml", null);
    textWritter.WriteStartDocument();
    textWritter.WriteStartElement("Data");
    textWritter.WriteEndElement();
    textWritter.Close();
}

if (File.Exists("BB.xml"))
{
    if (File.Exists("BB.xml.old"))
    {
        File.Delete("BB.xml.old");
    }
    File.Move("BB.xml", "BB.xml.old");
}
if (!File.Exists("BB.xml"))
{
    XmlTextWriter textWritterPC3 = new XmlTextWriter("BB.xml", null);
    textWritterPC3.WriteStartDocument();
    textWritterPC3.WriteStartElement("Data");
    textWritterPC3.WriteEndElement();
    textWritterPC3.Close();
}
4

3 に答える 3

3

何が入っていFileNameTextBox.Textますか?ディレクトリパスを指定していますか?

2 番目のファイルは、どのディレクトリかを指定せずに作成されます。したがって、現在のディレクトリに作成されます。これは、必ずしもによって指定されたディレクトリではありませんFileNameTextBox.Text

于 2012-08-16T09:40:47.483 に答える
1

ファイル名の絶対パスを指定していないため、現在のディレクトリがたまたま何であれ使用しているため、信頼できません。また、 DirectoryInfo.Refresh()またはFileInfo.Refresh()を呼び出して、最新のディレクトリ情報 (ファイルが存在するかどうか) が表示されていることを確認する必要がある場合もあります。

于 2012-08-16T09:47:54.513 に答える
0

コメントは、最初の行を実行する最後の if ケースのみを作成しています。最後の if は次のようになります。それがあなたの例だけにあるかどうかはわかりません。あなたの例

if (!File.Exists("BB.xml")) //            {
            XmlTextWriter textWritterPC3 = new XmlTextWriter("BB.xml", null);

する必要があります

if (!File.Exists("BB.xml")) //            
{
    XmlTextWriter textWritterPC3 = new XmlTextWriter("BB.xml", null);
    textWritterPC3.WriteStartDocument();
    textWritterPC3.WriteStartElement("Data");

    textWritterPC3.WriteEndElement();
    textWritterPC3.Close();
}
于 2012-08-16T09:47:59.973 に答える