2015-10-06 207 views
2

我想寫一個單元測試來測試從兩個.doc文件創建.zip文件。 BU我需要一個錯誤:錯誤創建壓縮文件:java.io.FileNotFoundException:d:\ FILE1.TXT(系統找不到指定的文件)如何從兩個.doc文件創建一個.zip文件?

我的代碼是在這裏:

@Test 
public void testIsZipped() { 

    String actualValue1 = "D:/file1.txt"; 
    String actualValue2 = "D:/file2.txt"; 

    String zipFile = "D:/file.zip"; 

    String[] srcFiles = { actualValue1, actualValue2 }; 

    try { 

     // create byte buffer 

     byte[] buffer = new byte[1024]; 

     FileOutputStream fos = new FileOutputStream(zipFile); 
     zos = new ZipOutputStream(fos); 

     for (int i = 0; i < srcFiles.length; i++) { 

      File srcFile = new File(srcFiles[i]); 

      FileInputStream fis = new FileInputStream(srcFile); 

      // begin writing a new ZIP entry, positions the stream to the 
      // start of the entry data 

      zos.putNextEntry(new ZipEntry(srcFile.getName())); 

      int length; 

      while ((length = fis.read(buffer)) > 0) { 

       zos.write(buffer, 0, length); 
      } 

      zos.closeEntry(); 

      // close the InputStream 

      fis.close(); 
     } 

     // close the ZipOutputStream 

     zos.close(); 

    } 

    catch (IOException ioe) { 

     System.out.println("Error creating zip file: " + ioe); 
    } 

    String result = zos.toString(); 

    assertEquals("D:/file.zip", result); 
} 

我可以從zos獲取zip文件的名稱來測試,如何理解通過測試?任何人都可以幫我解決這個錯誤嗎?謝謝。

+0

我的猜測是,該文件是不存在或者路徑是錯誤的(Windows使用'\'來分隔路徑,你必須逃脫 – hotzst

+0

是否'd:?:\ file1.txt'存在做你有閱讀權限嗎?可能考慮嘗試'D:\\ file1.txt' – CollinD

+0

我在D目錄下創建了file1.txt和file2.txt文件,現在沒有錯誤,但是我沒有通過測試。定義目錄:「D:\\ file1.txt」,「D:\ file1.txt」和「D:/file1.txt」。 – selentoptas

回答

0

首先,您的文件是否在以前的測試方法中創建?如果是考慮到JUnit測試不要在你定義的測試方法的順序執行,看看這個:
How to run test methods in specific order in JUnit4?

其次,你可以添加一個調試行:

File srcFile = new File(srcFiles[i]); 
System.out.append(srcFile+ ": " + srcFile.exists() + " " + srcFile.canRead()); 

後你解決你會遇到這個問題外,會導致測試失敗:

String result = zos.toString(); 

assertEquals("D:/file.zip", result); 

zos.toString()將返回類似:「[email protected]」,這將不等於「d :/ file.zip」。

String zipFile = "D:/file.zip"; 
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile)); 
System.out.println(zos.toString()); 
相關問題