2016-11-16 3 views
2

フォルダXからフォルダYにファイルを圧縮する必要があります。フォルダXのファイルがフォルダYに圧縮されると、フォルダXのファイルを削除する必要があります。 zipの名前は、そのフォルダ内の.DBSを持つファイルの名前でなければなりません。ASP.NET Windowsコンソールファイル+ ZIPへのファイル名

だから、.DBSファイルのファイル名が何であるかを知る必要があります。次に、フォルダXのすべてのファイルをフォルダYに「zip」します(これは.DBSファイルと同じです)。ファイルが圧縮されていて、フォルダYに入っている場合は、フォルダXから削除する必要があります

私が今入手したコードは、フォルダXのファイルもYに移動します。これが始まりです。私の質問は、ファイルの名前もzipフォルダ名にする方法です。

コード:事前に

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.IO; 
using System.IO.Compression; 

namespace Ramasoftzipper 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 


     string fileName = @"160001.DBS"; 
     string sourcePath = @"C:\RMExport"; 
     string targetPath = @"C:\Exportrm"; 
     string sourceFile = System.IO.Path.Combine(sourcePath, fileName); 
     string destFile = System.IO.Path.Combine(targetPath, fileName); 
     string startPath = @"C:\RMExport"; 
     string zipPath = (fileName); 
     string extractPath = @"C:\Exportrm"; 


     if (!System.IO.Directory.Exists(targetPath)) 
     { 
      System.IO.Directory.CreateDirectory(targetPath); 
     } 


     System.IO.File.Copy(sourceFile, destFile, true); 


     if (System.IO.Directory.Exists(sourcePath)) 
     { 
      string[] files = System.IO.Directory.GetFiles(sourcePath); 


      foreach (string s in files) 
      { 

       fileName = System.IO.Path.GetFileName(s); 
       destFile = System.IO.Path.Combine(targetPath, fileName); 
       System.IO.File.Copy(s, destFile, true); 
       ZipFile.CreateFromDirectory(startPath, zipPath); 
       ZipFile.ExtractToDirectory(zipPath, extractPath); 
      } 
     } 
     else 
     { 
      Console.WriteLine("Source path does not exist!"); 



     } 
    } 
} 
} 

感謝。

+0

'文字列[]ファイル=のSystem.IO.Directory.GetFiles(パスを削除、 " * .DBS ");' .DBS拡張子を持つすべてのファイル名を取得します。それはあなたが必要とするものですか? – bkaf

+0

@bkafはいthats私が必要とするが、私の郵便番号はまだ動作していない。私はそれを解決するために何をすべきか知っていますか? – mrminer

+0

@bkafどこに配置する必要がありますか?string [] files = System.IO.Directory.GetFiles(startPath、 "* .DBS");私のコードでは? – mrminer

答えて

2

(私はあなたを知って、あなたはこのようなもの、ヨーヨーを学ぶ必要があるので、これだけ多くを説明する:Pを)

あなたはより多くの情報のためのコード内のコメントを読んで、このような何かを試すことができ、このコードはあなただけを示していますフォルダ内のすべてのファイルを圧縮する方法、特定のextentionsを追加する次のステップを試し、自分

//files to zip, you can also use the same method as above to let the user determine what path to zip 
string path = @"C:\Users\WsLocal.NL-ROE2-W297\Pictures";    
string zipPath = @"C:\Users\WsLocal.NL-ROE2-W297\Desktop\zip\result.zip";    

//zip files 
ZipFile.CreateFromDirectory(path, zipPath); 
string[] files = Directory.GetFiles(path); 

//some debugging 
foreach (string filePath in files) 
{ 
    Console.WriteLine(filePath); 
} 
//wait untill user presses enter 
Console.ReadLine(); 

[EDIT]

ファイル名にzipファイルの名前を設定する:

//get all files from directory decladed by path 
string[] files = Directory.GetFiles(path); 
//select the 1st one and delete the folder information so just the file name is left with it's extention 
string zipName = files[0].Replace(path, ""); 

//delete the extention 
int index = zipName.IndexOf("."); 
if (index > 0) 
    zipName = zipName.Substring(0, index); 

//assemble the zip location with the generated file name   
string zipPath = @"C:\Users\WsLocal.NL-ROE2-W297\Desktop\zip\"+ zipName + ".zip"; 

string zipPath = @"C:\Users\WsLocal.NL-ROE2-W297\Desktop\zip\result.zip"; 

を交換し、

string[] files = Directory.GetFiles(path); 

//zip files 
ZipFile.CreateFromDirectory(path, zipPath); 

+0

Hey Luuk、私の.dbsファイルからzipファイルに名前を付けるにはどうすればいいですか – mrminer

+0

sooooomuch – mrminer

+0

ありがとうございました。もしそれらが圧縮されていれば、ramasoftフォルダからファイルを削除する方法はありますか? – mrminer

関連する問題