diff --git a/QuickLook.Plugin/QuickLook.Plugin.AppViewer/PackageParsers/AppImage/AppImageReader.cs b/QuickLook.Plugin/QuickLook.Plugin.AppViewer/PackageParsers/AppImage/AppImageReader.cs index 63f84e8..3f71c49 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.AppViewer/PackageParsers/AppImage/AppImageReader.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.AppViewer/PackageParsers/AppImage/AppImageReader.cs @@ -61,8 +61,8 @@ public class AppImageReader public AppImageReader(string path) { - using FileStream fs = File.OpenRead(path); - Open(fs); + using var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete); + Open(fileStream); } private void Open(Stream stream) diff --git a/QuickLook.Plugin/QuickLook.Plugin.AppViewer/PackageParsers/Wgt/WgtParser.cs b/QuickLook.Plugin/QuickLook.Plugin.AppViewer/PackageParsers/Wgt/WgtParser.cs index f270aa5..1d2e0af 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.AppViewer/PackageParsers/Wgt/WgtParser.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.AppViewer/PackageParsers/Wgt/WgtParser.cs @@ -29,7 +29,7 @@ internal static class WgtParser { public static WgtInfo Parse(string path) { - using var fileStream = File.OpenRead(path); + using var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete); using var zipArchive = new ZipArchive(fileStream, ZipArchiveMode.Read); var manifestEntry = zipArchive.GetEntry("manifest.json"); diff --git a/QuickLook.Plugin/QuickLook.Plugin.ArchiveViewer/ArchiveInfoPanel.xaml.cs b/QuickLook.Plugin/QuickLook.Plugin.ArchiveViewer/ArchiveInfoPanel.xaml.cs index 472d00f..746e75a 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.ArchiveViewer/ArchiveInfoPanel.xaml.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.ArchiveViewer/ArchiveInfoPanel.xaml.cs @@ -134,14 +134,14 @@ public partial class ArchiveInfoPanel : UserControl, IDisposable, INotifyPropert private void LoadItemsFromArchive(string path) { - using var stream = File.OpenRead(path); + using var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete); // ReaderFactory is slow... so limit its usage string[] useReader = [".tar.gz", ".tgz", ".tar.bz2", ".tar.lz", ".tar.xz"]; if (useReader.Any(path.ToLower().EndsWith)) { - var reader = ReaderFactory.Open(stream, new ChardetReaderOptions()); + var reader = ReaderFactory.Open(fileStream, new ChardetReaderOptions()); _type = reader.ArchiveType.ToString(); @@ -149,13 +149,13 @@ public partial class ArchiveInfoPanel : UserControl, IDisposable, INotifyPropert { if (_disposed) return; - LoadPercent = 100d * stream.Position / stream.Length; + LoadPercent = 100d * fileStream.Position / fileStream.Length; ProcessByLevel(reader.Entry); } } else { - var archive = ArchiveFactory.Open(stream, new ChardetReaderOptions()); + var archive = ArchiveFactory.Open(fileStream, new ChardetReaderOptions()); _type = archive.Type.ToString(); @@ -163,7 +163,7 @@ public partial class ArchiveInfoPanel : UserControl, IDisposable, INotifyPropert { if (_disposed) return; - LoadPercent = 100d * stream.Position / stream.Length; + LoadPercent = 100d * fileStream.Position / fileStream.Length; ProcessByLevel(entry); } } diff --git a/QuickLook.Plugin/QuickLook.Plugin.FontViewer/WebfontPanel.cs b/QuickLook.Plugin/QuickLook.Plugin.FontViewer/WebfontPanel.cs index 984a4ae..de3c425 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.FontViewer/WebfontPanel.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.FontViewer/WebfontPanel.cs @@ -153,7 +153,7 @@ public class WebfontPanel : WebpagePanel if (File.Exists(localPath)) { - var fileStream = File.OpenRead(localPath); + var fileStream = new FileStream(localPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete); var response = _webView.CoreWebView2.Environment.CreateWebResourceResponse( fileStream, 200, "OK", MimeTypes.GetContentType()); args.Response = response; diff --git a/QuickLook.Plugin/QuickLook.Plugin.HtmlViewer/WebpagePanel.cs b/QuickLook.Plugin/QuickLook.Plugin.HtmlViewer/WebpagePanel.cs index 0e87d6f..4e95c64 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.HtmlViewer/WebpagePanel.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.HtmlViewer/WebpagePanel.cs @@ -210,7 +210,7 @@ public class WebpagePanel : UserControl if (File.Exists(fallbackFilePath)) { // Serve the file from the fallback directory - var fileStream = File.OpenRead(fallbackFilePath); + var fileStream = new FileStream(fallbackFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete); var response = _webView.CoreWebView2.Environment.CreateWebResourceResponse( fileStream, 200, "OK", "Content-Type: application/octet-stream"); args.Response = response; diff --git a/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/Webview/Lottie/LottieExtractor.cs b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/Webview/Lottie/LottieExtractor.cs index eade22f..92280d0 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/Webview/Lottie/LottieExtractor.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/Webview/Lottie/LottieExtractor.cs @@ -27,7 +27,7 @@ internal static class LottieExtractor { public static string GetJsonContent(string path) { - using var fileStream = File.OpenRead(path); + using var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete); using var zipArchive = new ZipArchive(fileStream, ZipArchiveMode.Read); var manifestEntry = zipArchive.GetEntry("manifest.json"); diff --git a/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/Webview/Svg/SvgImagePanel.cs b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/Webview/Svg/SvgImagePanel.cs index aa16aab..54d87ef 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/Webview/Svg/SvgImagePanel.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/Webview/Svg/SvgImagePanel.cs @@ -130,11 +130,11 @@ public class SvgImagePanel : WebpagePanel, IWebImagePanel } else { - var localPath = _fallbackPath + requestedUri.AbsolutePath.Replace('/', '\\'); + var localPath = _fallbackPath + Uri.UnescapeDataString(requestedUri.AbsolutePath).Replace('/', '\\'); if (File.Exists(localPath)) { - var fileStream = File.OpenRead(localPath); + var fileStream = new FileStream(localPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete); var response = _webView.CoreWebView2.Environment.CreateWebResourceResponse( fileStream, 200, "OK", MimeTypes.GetContentTypeHeader()); args.Response = response; @@ -149,7 +149,7 @@ public class SvgImagePanel : WebpagePanel, IWebImagePanel { if (File.Exists(localPath)) { - var fileStream = File.OpenRead(localPath); + var fileStream = new FileStream(localPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete); var response = _webView.CoreWebView2.Environment.CreateWebResourceResponse( fileStream, 200, "OK", $""" diff --git a/QuickLook.Plugin/QuickLook.Plugin.MarkdownViewer/MarkdownPanel.cs b/QuickLook.Plugin/QuickLook.Plugin.MarkdownViewer/MarkdownPanel.cs index d7b66a9..8d885ed 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.MarkdownViewer/MarkdownPanel.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.MarkdownViewer/MarkdownPanel.cs @@ -124,11 +124,11 @@ public class MarkdownPanel : WebpagePanel } else { - var localPath = _fallbackPath + requestedUri.AbsolutePath.Replace('/', '\\'); + var localPath = _fallbackPath + Uri.UnescapeDataString(requestedUri.AbsolutePath).Replace('/', '\\'); if (File.Exists(localPath)) { - var fileStream = File.OpenRead(localPath); + var fileStream = new FileStream(localPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete); var response = _webView.CoreWebView2.Environment.CreateWebResourceResponse( fileStream, 200, "OK", MimeTypes.GetContentType()); args.Response = response; diff --git a/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Plugin.cs b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Plugin.cs index 917628c..9351e52 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Plugin.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Plugin.cs @@ -69,9 +69,9 @@ public class Plugin : IViewer if (path.EndsWith(".rtf", StringComparison.OrdinalIgnoreCase)) { var rtfBox = new RichTextBox(); - using FileStream fs = File.OpenRead(path); + using var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete); rtfBox.Background = new SolidColorBrush(Colors.Transparent); - rtfBox.Selection.Load(fs, DataFormats.Rtf); + rtfBox.Selection.Load(fileStream, DataFormats.Rtf); rtfBox.IsReadOnly = true; rtfBox.VerticalScrollBarVisibility = ScrollBarVisibility.Auto; rtfBox.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto; diff --git a/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Themes/HighlightingThemeManager.cs b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Themes/HighlightingThemeManager.cs index 1a75a43..d1c2ddc 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Themes/HighlightingThemeManager.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Themes/HighlightingThemeManager.cs @@ -187,8 +187,8 @@ public class HighlightingThemeManager { Debug.WriteLine(file); var ext = Path.GetFileNameWithoutExtension(file); - using Stream s = File.OpenRead(Path.GetFullPath(file)); - using var reader = new XmlTextReader(s); + using var fileStream = new FileStream(Path.GetFullPath(file), FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete); + using var reader = new XmlTextReader(fileStream); var xshd = HighlightingLoader.LoadXshd(reader); var highlightingDefinition = HighlightingLoader.Load(xshd, hlm); if (xshd.Extensions.Count > 0)