2013-03-19 2 views
0

여기에 파일이 있지만 이전 정보를 덮어 씁니다. 거기에 그냥 파일을 업 그레 이드하고 실제 파일을 폴더에 넣지 않고 파일을 텍스트 파일에 쓰는 방법이 있습니까?여러 txt 파일로 zip 파일의 압축을 풀고 새 txt 파일로 바꾸려면 어떻게해야합니까?

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.text.DateFormat; 
import java.text.SimpleDateFormat; 
import java.util.List; 
import java.util.Vector; 
import java.util.zip.ZipEntry; 
import java.util.zip.ZipInputStream; 
import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.util.*; 

public class cuscreport 
{ 
    List<String> fileList; 
    private static final String INPUT_ZIP_FILE = "c:\\cusc031513.zip"; 
    private static final String OUTPUT_FOLDER = "C:\\temp\\test"; 
    Vector<String> v =new Vector<String>(); 

    public static void main(String[] args) throws IOException 
    { 
     cuscreport unZip = new cuscreport(); 
     unZip.unZipIt(INPUT_ZIP_FILE,OUTPUT_FOLDER); 
    } 
    private final static String getDate() { 
     DateFormat df = new SimpleDateFormat("yyyy-MM-dd") ; 
     df.setTimeZone(TimeZone.getTimeZone("EST") ) ; 
     return (df.format(new Date() ) ) ; 
    } 

    /** 
    * Unzip it 
    * @param zipFile input zip file 
    * @param output zip file output folder 
    */ 
    public void unZipIt(String zipFile, String outputFolder) throws IOException 
    { 

     byte[] buffer = new byte[1024]; 

    try{ 

     //create output directory is not exists 
     File folder = new File(OUTPUT_FOLDER); 
     if(!folder.exists()) 
     { 
      folder.mkdir(); 
     } 

     //get the zip file content 
     ZipInputStream zis = 
      new ZipInputStream(new FileInputStream(zipFile)); 
     //get the zipped file list entry 
     ZipEntry ze= zis.getNextEntry(); 




     while(ze!=null){ 

      String fileName = ze.getName(); 
      File newFile = new File(outputFolder + File.separator + fileName); 

      System.out.println("file unzip : "+ newFile.getAbsoluteFile()); 
      v.add(fileName); 

      //create all non exists folders 
      //else you will hit FileNotFoundException for compressed folder 
      new File(newFile.getParent()).mkdirs(); 

      FileOutputStream fos = new FileOutputStream(newFile);    

      int len; 
      while ((len = zis.read(buffer)) > 0) { 
      fos.write(buffer, 0, len); 
      } 

      fos.close(); 
      ze = zis.getNextEntry(); 
     } 

     zis.closeEntry(); 
     zis.close(); 

     for(int x = 1; x < v.size()-1; x++) 
     { 
      System.out.println(v.get(x)); 
      File inputFile = new File(outputFolder + File.separator +v.get(x)); 
      FileReader in = new FileReader(inputFile); 
      File outputFile = new File("C:\\temp\\test\\cuscreport"+getDate()+".txt"); 
      int c; 
      FileWriter out = new FileWriter(outputFile); 
      while ((c = in.read()) != -1) 
      { 
        out.write(c); 
      } 

       in.close(); 
       out.close(); 
     } 



     System.out.println("Done"); 

    }catch(IOException ex){ 
     ex.printStackTrace(); 
    } 
    }  
} 

여기에 파일이 있지만 이전 정보를 덮어 씁니다. 거기에 그냥 파일을 업 그레 이드하고 실제 파일을 폴더에 넣지 않고 파일을 텍스트 파일에 쓰는 방법이 있습니까? 당신이 JavaDocs for FileWriter 보면

+0

파일에 추가하는 데 사용되는 APPEND 변수를 가지고 있음을 볼 수 있습니다 - 그래서 당신의 질문은 정말 자신을 모순. zip 파일 내용을 메모리에 저장하는 옵션이 있습니다 (예 : 바이트 배열). 그게 당신이 성취하려고하는 것입니까? – Perception

+0

파일을 폴더에 넣지 않고 텍스트 파일에 쓰는 것은 무엇을 의미합니까? 폴더가 아니라면 어디로 파일을 이동 하시겠습니까? 또한, 벡터? –

답변

0

, 당신은 (자바 적어도) 물리적 디스크 개념 파일

관련 문제