Отправка только 1 МБ файлов из папки через веб-сервис - PullRequest
1 голос
/ 30 декабря 2010

Мой вопрос заключается в том, что я хочу отправлять pdf-файлы через веб-сервис, при условии, что из этой папки, содержащей много файлов, берется только 1 МБ файлов.

Пожалуйста, помогите мне решить этот вопрос. Я новичок в веб-сервисе. Спроси меня еще раз, если не ясно. Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 30 декабря 2010

Ну, я не знаю, правильно ли я понял ваши требования и поможет ли это вашей проблеме, но вы можете попробовать это Java-решение для фильтрации файлов из каталога.
Вы получите список файлов, а затем выможно использовать специальный код веб-службы для отправки этих файлов

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;
}

Это должно работать.
Если вам просто нужны имена файлов, замените File[] на String[] и .listFiles() на list()
Я не могу сказать много о производительности, хотя.Для небольшого списка файлов он должен работать довольно быстро.

1 голос
/ 02 января 2011

Следующий метод вернет список всех файлов с общим размером <= 1Mb </p>

    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 голосов
/ 30 декабря 2010

Я не уверен, что это то, что вам нужно, но вы можете выбрать файлы и проверить их размер:

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

File.length() Javadoc

Отправляйте файлы размером 1 Мб.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...