FileStream读写文件示例:
FileStream读:
- byte[] byteData = new byte[200];
- char[] charData = new char[200];
- try
- {
- // 读取当前文件..表示上级目录
- FileStream aFile = new FileStream("../../Program.cs", FileMode.Open);
- //查找并从指定位置读取
- aFile.Seek(174, SeekOrigin.Begin);
- aFile.Read(byteData, 0, 200);
- }
- catch (IOException e)
- {
- WriteLine("An IO exception has been thrown!");
- WriteLine(e.ToString());
- ReadKey();
- return;
- }
- //编码
- Decoder d = Encoding.UTF8.GetDecoder();
- d.GetChars(byteData, 0, byteData.Length, charData, 0);
- WriteLine(charData);
- ReadKey();
StreamFile写:
- byte[] byteData;
- char[] charData;
- try
- {
- //打开文件,如果没有就创建新的
- FileStream aFile = new FileStream("Temp.txt", FileMode.Create);
- charData = "My pink half of the drainpipe.".ToCharArray();
- byteData = new byte[charData.Length];
- //编码
- Encoder e = Encoding.UTF8.GetEncoder();
- e.GetBytes(charData, 0, charData.Length, byteData, 0, true);
- //查找位置,写入
- aFile.Seek(0, SeekOrigin.Begin);
- aFile.Write(byteData, 0, byteData.Length);
- ReadKey();
- }
- catch (IOException ex)
- {
- WriteLine("An IO exception has been thrown!");
- WriteLine(ex.ToString());
- ReadKey();
- return;
- }
读StreamReader
- string line;
- try
- {
- // 用FileStream对象打开文件
- FileStream aFile = new FileStream("Log.txt", FileMode.Open);
- // 用StreamReader对象读取文件
- StreamReader sr = new StreamReader(aFile);
- line = sr.ReadLine();
- // Read data in line by line.
- while (line != null)
- {
- WriteLine(line);
- line = sr.ReadLine();
- }
- sr.Close();
- }
- catch (IOException e)
- {
- WriteLine("An IO exception has been thrown!");
- WriteLine(e.ToString());
- }
写StreamWriter
- try
- {
- // FileStream对象打开文件
- FileStream aFile = new FileStream("Log.txt", FileMode.OpenOrCreate);
- // StreamWriter对象写入文件
- StreamWriter sw = new StreamWriter(aFile);
- bool truth = true;
- // Write data to file.
- sw.WriteLine("Hello to you.");
- // 文件写入的时间
- sw.WriteLine($"It is now {DateTime.Now.ToLongDateString()} and things are looking good.");
- sw.Write("More than that,");
- sw.Write($" it's {truth} that C# is fun.");
- sw.Close();
- }
- catch(IOException e)
- {
- WriteLine("An IO exception has been thrown!");
- WriteLine(e.ToString());
- ReadLine();
- return;
- }
GZipStream 读写压缩文件示例:
- static void SaveCompressedFile(string filename, string data)//保存
- {
- FileStream fileStream =
- new FileStream(filename, FileMode.Create, FileAccess.Write);
- //压缩
- GZipStream compressionStream =
- new GZipStream(fileStream, CompressionMode.Compress);
- StreamWriter writer = new StreamWriter(compressionStream);
- writer.Write(data);
- writer.Close();
- }
- static string LoadCompressedFile(string filename)//加载
- {
- FileStream fileStream =
- new FileStream(filename, FileMode.Open, FileAccess.Read);
- //解压
- GZipStream compressionStream =
- new GZipStream(fileStream, CompressionMode.Decompress);
- StreamReader reader = new StreamReader(compressionStream);
- string data = reader.ReadToEnd();
- reader.Close();
- return data;
- }
- static void Main(string[] args)
- {
- try
- {
- string filename = "fileStream.txt";
- WriteLine(//using static System.Console
- "Enter a string to compress (will be repeated 100 times):");
- string sourceString = ReadLine();
- StringBuilder sourceStringMultiplier =
- new StringBuilder(sourceString.Length * 100);
- for (int i = 0; i < 100; i++)
- {
- sourceStringMultiplier.Append(sourceString);
- }
- sourceString = sourceStringMultiplier.ToString();
- WriteLine($"Source data is {sourceString.Length} bytes long.");
- SaveCompressedFile(filename, sourceString);
- WriteLine($"\nData saved to {filename}.");
- FileInfo compressedFileData = new FileInfo(filename);
- WriteLine($"Compressed file is {compressedFileData.Length} bytes long.");
- string recoveredString = LoadCompressedFile(filename);
- recoveredString = recoveredString.Substring(
- 0, recoveredString.Length / 100);
- WriteLine($"\nRecovered data: {recoveredString}");
- ReadKey();
- }
- catch (IOException ex)
- {
- WriteLine("An IO exception has been thrown!");
- WriteLine(ex.ToString());
- ReadKey();
- }
- }
FileSystem'Watcher监控文件系统:
简单的Design界面如下:
- <Grid>
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto" />
- <RowDefinition Height="Auto" />
- <RowDefinition />
- </Grid.RowDefinitions>
- <Grid Margin="4">
- <Grid.ColumnDefinitions>
- <ColumnDefinition />
- <ColumnDefinition Width="Auto" />
- </Grid.ColumnDefinitions>
- <TextBox Name="LocationBox" TextChanged="LocationBox_TextChanged" />//显示文件名字
- <Button Name="BrowseButton" Grid.Column="1" Margin="4,0,0,0" Content="Browse..." Click="BrowseButton_Click" />//浏览文件button
- </Grid>
- <Button Name="WatchButton" Content="Watch!" Margin="4" Grid.Row="1" Click="WatchButton_Click" IsEnabled="False" />//监控button
- <ListBox Name="WatchOutput" Margin="4" Grid.Row="2" />//文件更改时显示
- </Grid>
代码隐藏文件如下:
- private FileSystemWatcher watcher;
- public MainWindow()
- {
- InitializeComponent();
- watcher = new FileSystemWatcher();
- watcher.Deleted += (s, e) => //删除
- AddMessage($"File: {e.FullPath} Deleted");
- watcher.Renamed += (s, e) => //重命名
- AddMessage($"File renamed from {e.OldName} to {e.FullPath}");
- watcher.Changed += (s, e) => //更改内容
- AddMessage($"File: {e.FullPath} {e.ChangeType.ToString()}");
- watcher.Created += (s, e) => //创建
- AddMessage($"File: {e.FullPath} Created");
- }
- private void AddMessage(string message)
- {
- Dispatcher.BeginInvoke(new Action(
- () => WatchOutput.Items.Insert(
- 0, message)));
- }
- private void BrowseButton_Click(object sender, RoutedEventArgs e)//浏览button的点击事件,打开windows浏览文件对话框
- {
- OpenFileDialog dialog = new OpenFileDialog();
- if (dialog.ShowDialog(this) == true)
- {
- LocationBox.Text = dialog.FileName;
- }
- }
- private void LocationBox_TextChanged(object sender, TextChangedEventArgs e)//文本更改事件
- {
- WatchButton.IsEnabled = !string.IsNullOrEmpty(LocationBox.Text);
- }
- private void WatchButton_Click(object sender, RoutedEventArgs e)//监控button点击事件,开始监控
- {
- watcher.Path = System.IO.Path.GetDirectoryName(LocationBox.Text);
- watcher.Filter = System.IO.Path.GetFileName(LocationBox.Text);
- watcher.NotifyFilter = NotifyFilters.LastWrite |
- NotifyFilters.FileName | NotifyFilters.Size;
- AddMessage("Watching " + LocationBox.Text);
- // Begin watching.
- watcher.EnableRaisingEvents = true;
- }
- }