コード例 #1
0
ファイル: ImagesMedia.cs プロジェクト: Boddlnagg/WordsLive
        private IEnumerable<ImageInfo> LoadFromTxt()
        {
            if (!Uri.IsFile)
                throw new NotImplementedException("Loading slideshows from a remote source is not implemented.");

            using (var reader = new StreamReader(Uri.LocalPath))
            {
                string line = reader.ReadLine();

                if (line == null)
                    yield break;

                Uri alternateBaseUri = null;

                if (line.StartsWith("#"))
                {
                    alternateBaseUri = new Uri(line.Substring(1).Trim());
                    line = reader.ReadLine(); // read next line
                }

                while (line != null)
                {
                    ImageInfo next = null;
                    try
                    {
                        var relativeUri = new Uri(line, UriKind.RelativeOrAbsolute);
                        if (relativeUri.IsAbsoluteUri)
                            next = new ImageInfo(relativeUri);
                        else
                        {
                            var uri = new Uri(Uri, relativeUri);
                            if (uri.IsFile && !File.Exists(uri.LocalPath))
                            {
                                // try alternate base uri if the file does not exist
                                uri = new Uri(alternateBaseUri, relativeUri);
                            }

                            next = new ImageInfo(uri);
                        }
                    }
                    catch (UriFormatException)
                    {
                        continue;
                    }
                    finally
                    {
                        line = reader.ReadLine(); // read next line
                    }

                    yield return next;
                }
            }
        }