2010-05-26 7 views
1

나는 내 파일의 경로가있는 문자열을 가지고 있는데이 문자열로 new FormFile을 생성하려고합니다. 있을 수있다 ..?FormFile 객체를 인스턴스화하는 방법은 무엇입니까?

내 코드 :

public ArrayList<FormFile> getFilesFromFolder(String path) { 
    File file = new File(path); 
    ArrayList<FormFile> vFiles = new ArrayList<FormFile>(); 

    if (file.exists()) { 

    File[] files = file.listFiles(); 
    int i; 

    for (i = 0; i < files.length; i++) { 
    if (files[i].isFile()) { 
    vFiles.add((FormFile) files[i]); 
    } 
    } 
    } else { 
    vFiles = null; 
    } 
    return vFiles; 
} 

하지만 난이 라인에서 오류가 vFiles.add((FormFile) files[i]);

java.lang.ClassCastException가 : java.io.File에이 org.apache에 캐스트 할 수 없습니다. struts.upload.FormFile

답변

0

File 개체를 만들기 때문에 코드가 실패합니다. ,하지만 당신은 FormFile로 캐스팅하려고합니다. FormFile은 인터페이스이므로 직접 인스턴스화 할 수 없습니다. 너는 이 필요하고, 그게 new DiskFile(path)이 될 것 같습니다.

1

FormFile은 인터페이스입니다 (인스턴스화 할 수 없음). CommonsMultipartRequestHandler.CommonsFormFile과 같이이 인터페이스의 구현을 살펴보십시오. 이 파일에는 생성자가 있으며 파일을 나타내는 FileItem (DiskFileItem)에 대해 만들 수 있습니다.

+0

어떻게 해야할지 모르겠다. – Mercer

+0

그 클래스에 대한 javaDoc을 읽으십시오. 모든 것이 설명되어 있습니다. 가지고 있지 않다면 : 'docjar FormFile'에 대한 google을 사용하여 온라인 javaDoc에 액세스하십시오. –

+0

내가 이것을 할 때 DiskFile diskFile = 새로운 DiskFile (파일 [i] .getPath()); 내 파일 경로가 있지만 파일 내용이 없습니다. – Mercer

관련 문제