2016-03-22 110 views
-1

這是我的第一個問題在Stackoverflow如何使用C#將任何文件轉換爲其他任意格式(.rjb)並恢復爲原始格式?

我想將文件夾中的某些文件(.txt,.mp3,.mp4,.pdf,.png,.exe等)轉換爲格式.rjb,由我創建。而且我也想從.rjb文件恢復原始文件。但.txt文件以外的每個文件都會損壞。請幫助我,完成此任務。下面的代碼是我正在使用的。

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Drawing.Imaging; 
using System.IO; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace rjbformat 
{ 
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     if (textBox1.Text != "") 
     { 
      try 
      { 


       //string data = Convert.ToString(File.ReadAllBytes(textBox1.Text)); 
       // string datas = File.ReadAllText(textBox1.Text); 
       //string dat = File.ReadAllText(textBox1.Text, Encoding.ASCII); 
       //var dataS = Convert.ToString(datas); 



       using (StreamWriter sw = new StreamWriter(textBox1.Text + ".rjb")) 
       { 
        sw.Write(textBox3.Text); 
       } 


      } 
      catch (Exception) 
      { 
       MessageBox.Show("Specified Input file DOESNOT EXIST!", "Error", MessageBoxButtons.OK, 
        MessageBoxIcon.Error); 
       //throw; 
      } 
     } 
     else 
     { 
      MessageBox.Show("Please select Input file"); 
     } 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     openFileDialog1.Title = "Open Text File (Rajib)"; 
     openFileDialog1.Filter = "Text Files(*.txt;*.cod;*.ubc)|*.txt;*.cod;*.ubc"; 
     openFileDialog1.Filter = "All Files(*.*)|*.*"; 
     if (openFileDialog1.ShowDialog() == DialogResult.OK) 
     { 
      textBox1.Text = openFileDialog1.FileName; 
      textBox2.Text = openFileDialog1.FileName + ".rjb"; 
      File.Copy(textBox1.Text, textBox2.Text,true); 
FileAccess.ReadWrite.ToString(textBox1.Text); 


      var lines = File.ReadAllLines(textBox1.Text); 
     /* foreach (string line in lines) 
      { 
       textBox3.Text += line+"\r\n"; 
      }*/ 

      File.AppendAllLines(textBox2.Text, lines); 


    //  FileStream fs = new FileStream(textBox1.Text, FileMode.Open); 
     //  int hexIn; 
     //  String hex = ""; 

    //  for (int i = 0; i<50/*(hexIn = fs.ReadByte()) != -1*/; i++) 
     //  { 
     //  hex = string.Format("{0:X2}", fs.ReadByte()); 
      //  // int bina = fs.ReadByte(); 
      // textBox3.Text += hex; 
      //} 


     } 
    } 
} 

} 
+0

您需要說明如何轉換爲這種新格式。這是什麼格式。從你的問題來看,這似乎有點奇怪,沒有任何結果。 – Alex

+1

看起來你正在用文本文件工具讀取二進制文件 –

回答

1

如果你正在做的是存儲一個或多個文件到您的.rjb格式,並希望得到他們回來完好,這聽起來很像創建歸檔文件。在這種情況下,您可能需要考慮只使用標準zip文件並自定義擴展名。

下面是一個使用ZipArchive類的例子:

using System.IO.Compression; 

namespace CustomZip 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string startPath = @"c:\example\start"; 
      string zipPath = @"c:\example\result.rjb"; 
      string extractPath = @"c:\example\extract"; 

      ZipFile.CreateFromDirectory(startPath, zipPath); 

      ZipFile.ExtractToDirectory(zipPath, extractPath); 
     } 
    } 
} 

您將需要添加引用System.IO.Compression.FileSystem到您的項目。

+0

非常感謝digitalnoiz,你是對的我想要類似.zip的東西,但並不完全是因爲,zip可以被任何一個數據提取出來並且不再保持私有(受保護)如果沒有密碼保護! &爲大量文件記住太多密碼也不方便。所以,我想要一個文件格式(.rjb),這個文件格式是由一個專門設計的程序以文件原始格式打開的。所以,請指導我如何完成。再一次感謝你。 :) –

相關問題