2016-04-25 1 views
0

ゲームのアップデーターで問題が発生しました。基本的には、すでに暗号化されたファイルを復号化し、それを読み取って再度暗号化してゲームを実行することです。場合によっては、更新プログラムをダウンロードして、暗号化された更新プログラムをダウンロードし、既にゲームフォルダにあるファイルを復号化し、更新プログラムを追加し、ファイルを再度暗号化し、ゲームを実行する必要があります。通常、私は、新しい暗号化されたファイルを作成し、その更新中にフォルダに入れなければならないでしょう、そして、私はそれを避け、exeが独自のファイルを作成する必要はありません。私はそれが復号化されたデータを読む必要がある部分に来た以外はかなりきれいになっていますが、そこにファイルがなければどのように読むべきかわかりません(そして私はそれをそのままにしておきたい)System.ArgumentOutOfRangeException C#

これは私はSystem.ArgumentOutOfRange Exception Non Negative Numberが必要です。

System.ArgumentOutOfRangeException: Non-negative number required. Parameter name: value at System.IO.FileStream.set_Position(Int64 value) at Update.SAH.Write_File(FILE f, SAH patch) in C:\........SAH.cs:line322 


Line 322: 
BinaryReader br = new BinaryReader(File.OpenRead(patch.SAF_Path)); 
      br.BaseStream.Position = (long)f.Start; 
      byte[] file = br.ReadBytes((int)f.Length); 
      br.Dispose(); 
      BinaryWriter bw = new BinaryWriter(File.OpenWrite(SAF_Path)); 
      bw.BaseStream.Position = (int)new FileInfo(SAF_Path).Length; 
      f.Start = (ulong)bw.BaseStream.Position; 
      bw.Write(file); 
      bw.Dispose(); 
      current_folder.Files.Add(f); 

       f.Start = BitConverter.ToUInt64(file, Offset); 
       Offset += 8; 

       f.Length = BitConverter.ToUInt64(file, Offset); 
       Offset += 8; 

助けてください。

+1

は 'f.Start'があるように見える場合

次に、あなたは簡単に使用できる、<0 –

+0

どこに暗号化/復号化がですか?エンコード/デコードを意味するのでしょうか?暗号化/復号化は、機密性を提供するために鍵を使用する暗号化操作です。 –

+0

これは、暗号化/復号化のpublic static byte []です。Encrypt(byte [] bytes、string key) { 新しいTripleDESCryptoServiceProvider {Key = new MD5CryptoServiceProvider()、ComputeHash(Encoding.ASCII.GetBytes(key))、Mode = CipherMode.ECB、Padding = PaddingMode.PKCS7} .CreateEncryptor()。TransformFinalBlock(バイト、0、bytes.Length); } –

答えて

0

ファイルが存在することを確認しますか?

if(File.Exist(patch.SAF_Path)) 
{ 
BinaryReader br = new BinaryReader(File.OpenRead(patch.SAF_Path)); 
      br.BaseStream.Position = (long)f.Start; 
      byte[] file = br.ReadBytes((int)f.Length); 
      br.Dispose(); 
      BinaryWriter bw = new BinaryWriter(File.OpenWrite(SAF_Path)); 
      bw.BaseStream.Position = (int)new FileInfo(SAF_Path).Length; 
      f.Start = (ulong)bw.BaseStream.Position; 
      bw.Write(file); 
      bw.Dispose(); 
      current_folder.Files.Add(f); 

      f.Start = BitConverter.ToUInt64(file, Offset); 
      Offset += 8; 

      f.Length = BitConverter.ToUInt64(file, Offset); 
      Offset += 8; 
} 
else 
{ 
//do somethings else downloand this file maybe and try read it 
} 
+0

ファイルが存在します。私が得ている問題は、コードを読むことです。 –

関連する問題