This conforms to DRY, no-goto and no-multiple-returns rules, is scalable and readable in my opinion:

    success = FileExists(file);
    if (success)
    {
        contents = OpenFile(file);
        success = SomeTest(contents);
    }
    if (success)
    {
        DoSomething(contents);
    }
    else
    {
        DefaultAction();
    }