2010-12-30 7 views
1

제 질문은 여러 파일이 들어있는 폴더에서 1MB의 파일 만 가져 오는 조건으로 웹 서비스를 통해 pdf 파일을 보내고 싶습니다.웹 서비스를 통해 폴더에서 1MB의 파일 만 전송

이 질문을 해결하는 데 도움을주십시오. 웹 서비스를 처음 사용합니다. 명확하지 않으면 다시 확인하십시오. 미리 감사드립니다. 이 당신이 원하는 경우

+0

사용하는 웹 서비스의 풍미 모든 파일의 목록을 반환합니다? –

+0

아파치 톰캣 6.0.20에서 아파치 축 웹 서비스. –

+0

어떻게 webservice를 통해 pdf를 보낼 계획입니까? 비누 첨부 또는 mtom? –

답변

1

다음 메소드는 전체 크기입니다 < = 1MB의

public List<File> getFilesList(){ 
    File dirLoc = new File("C:\\Temp"); 
    List<File> validFilesList = new ArrayList<File>(); 
    File[] fileList; 
    final int fileSizeLimit = 1024000; // Bytes 
    try { 
     // select all the files whose size <= 1Mb 
     fileList = dirLoc.listFiles(new FilenameFilter() { 
      public boolean accept(final File dirLoc, final String fileName) { 
       return (new File(dirLoc + "\\" + fileName).length() <= fileSizeLimit); 
      } 
     }); 
     long sizeCtr = fileSizeLimit; 
     for(File file : fileList){ 
      if(file.length() <= sizeCtr){ 
       validFilesList.add(file); 
       sizeCtr = sizeCtr - file.length(); 
       if(sizeCtr <= 0){ 
        break; 
       } 
      } 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
     validFilesList = new ArrayList<File>(); 
    } finally { 
     fileList = null; 
    } 
    return validFilesList; 
} 
+0

답변 해 주셔서 감사합니다.하지만이 질문에 대한 해결책을 얻었습니다. \t if (outputFolder.listFiles(). length! = 0) { \t \t \t trackFile = outputFolder.listFiles(). length; \t \t \t files = trackFile; \t \t} \t \t 동안 (크기 <= 1048576) { \t \t \t 크기 + = sendFiles [파일].길이(); \t \t \t 파일 ++; \t \t \t numberOfFiles ++; \t \t} \t \t Object [] obj = new Object [numberOfFiles]; –

0

나는 확실하지 않다 그러나 당신은 파일을 선택하고 그들의 크기를 확인할 수 있습니다

java.io.File file = new java.io.File("myfile.txt"); 
file.length(); 

File.length()Javadoc

는 크기가 1 메가 바이트 파일을 전송합니다.

+0

안녕하세요 Deepak 나는 각 폴더의 각 파일의 크기를 계산하고 싶지 않습니다. 그러나 특정 폴더에서 1MB의 파일 만 가져오고 싶습니다. 의심의 여지가 없기를 바랍니다. –

1

글쎄, 당신의 요구 사항을 정확하게 이해하고 이것이 당신의 문제를 도울 지 모르겠지만 당신이 디렉토리에서 파일을 필터링이 자바 솔루션을 시도해 볼 수 있습니다.
당신은 파일의 목록을 얻을 것이다 그리고 당신은이 파일

File dirLoc = new File("C:\\California"); 
File[] fileList; 
final int fileSize = 1024000; 

try { 
    fileList = dirLoc.listFiles(new FilenameFilter() { 
     public boolean accept(final File dirLoc, final String fileName) { 
      return (new File(dirLoc+"\\"+fileName).length() > fileSize); 
     } 
     }); 
} catch (Exception e) { 
    e.printStackTrace(); 
} finally { 
    fileList = null; 
} 

이 작동합니다

를 보낼 수있는 웹 서비스를 특정 코드를 사용할 수 있습니다. 당신은 그냥 파일 이름이 필요한 경우
, 나는 비록 성능에 대해 많은 것을 말할 수 없다 list()
String[].listFiles()File[]를 교체합니다. 작은 파일 목록의 경우 꽤 빨리 작동해야합니다.

+0

답장을 보내 주셔서 감사합니다하지만 답장을 보내 주셔서 감사합니다하지만 그냥 크기가 1 MB보다 큰 파일을 제공합니다. 주로 나는 크기가 1 MB가되는 폴더에서 파일을 수집하고 싶습니다. 즉, 폴더에서 12 개의 파일을 말하게했습니다. 파일 (1 파일이든 2 파일이든)을 웹 서비스에 보내십시오. 의심의 여지가 없는지 확인하십시오. –

관련 문제