2013-10-30 26 views
0

我想製作一個指定的目錄到一個存檔文件並根據我想要的位置存儲? 是否可以創建?
如何將檔案文件的指定目錄製作到所需位置?

請分享信息,如果你有。

我的代碼:

File input = new File("sample.tar.gz"); 
TFile sourceFile = new TFile(input); 
TFile targetFile = new TFile(File.createTempFile("sample", ".zip")); 
try 
{ 
TFile.cp_rp(sourceFile, targetFile, TArchiveDetector.NULL); 
} 
finally 
{ 
TFile.umount(targetFile); 
} 
+0

_is可以使用JAVA_是有可能創造。你有什麼嘗試?您需要提取ZIP文件,將其放入該文件並需要重新打包它 –

+0

請參閱http://docs.oracle.com/javase/7/docs/api/java/util/zip/ZipFile.html – Apurv

回答

0

嘗試以下操作:

import java.io.*; 
import java.util.zip.*; 

/** 
* This class defines two static methods for gzipping files and zipping 
* directories. It also defines a demonstration program as a nested class. 
**/ 
public class Compress { 
    /** Gzip the contents of the from file and save in the to file. */ 
    public static void gzipFile(String from, String to) throws IOException { 
    // Create stream to read from the from file 
    FileInputStream in = new FileInputStream(from); 
    // Create stream to compress data and write it to the to file. 
    GZIPOutputStream out = new GZIPOutputStream(new FileOutputStream(to)); 
    // Copy bytes from one stream to the other 
    byte[] buffer = new byte[4096]; 
    int bytes_read; 
    while((bytes_read = in.read(buffer)) != -1) 
     out.write(buffer, 0, bytes_read); 
    // And close the streams 
    in.close(); 
    out.close(); 
    } 

    /** Zip the contents of the directory, and save it in the zipfile */ 
    public static void zipDirectory(String dir, String zipfile) 
     throws IOException, IllegalArgumentException { 
    // Check that the directory is a directory, and get its contents 
    File d = new File(dir); 
    if (!d.isDirectory()) 
     throw new IllegalArgumentException("Compress: not a directory: " + dir); 
    String[] entries = d.list(); 
    byte[] buffer = new byte[4096]; // Create a buffer for copying 
    int bytes_read; 

    // Create a stream to compress data and write it to the zipfile 
    ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipfile)); 

    // Loop through all entries in the directory 
    for(int i = 0; i < entries.length; i++) { 
     File f = new File(d, entries[i]); 
     if (f.isDirectory()) continue;    // Don't zip sub-directories 
     FileInputStream in = new FileInputStream(f); // Stream to read file 
     ZipEntry entry = new ZipEntry(f.getPath()); // Make a ZipEntry 
     out.putNextEntry(entry);      // Store entry in zipfile 
     while((bytes_read = in.read(buffer)) != -1) // Copy bytes to zipfile 
     out.write(buffer, 0, bytes_read); 
     in.close();         // Close input stream 
    } 
    // When we're done with the whole loop, close the output stream 
    out.close(); 
    } 

    /** 
    * This nested class is a test program that demonstrates the use of the 
    * static methods defined above. 
    **/ 
    public static class Test { 
    /** 
    * Compress a specified file or directory. If no destination name is 
    * specified, append .gz to a file name or .zip to a directory name 
    **/ 
    public static void main(String args[]) throws IOException { 
     if ((args.length != 1) && (args.length != 2)) { // check arguments 
     System.err.println("Usage: java Compress$Test <from> [<to>]"); 
     System.exit(0); 
     } 
     String from = args[0], to; 
     File f = new File(from); 
     boolean directory = f.isDirectory(); // Is it a file or directory? 
     if (args.length == 2) to = args[1];  
     else {         // If destination not specified 
     if (directory) to = from + ".zip"; // use a .zip suffix 
     else to = from + ".gz";    // or a .gz suffix 
     } 

     if ((new File(to)).exists()) { // Make sure not to overwrite anything 
     System.err.println("Compress: won't overwrite existing file: " + to); 
     System.exit(0); 
     } 

     // Finally, call one of the methods defined above to do the work. 
     if (directory) Compress.zipDirectory(from, to); 
     else Compress.gzipFile(from, to); 
    } 
    } 
} 
相關問題