通过Web服务仅从文件夹发送1mb的文件

时间:2010-12-30 10:20:07

标签: java web-services java-ee

我的问题是我想通过网络服务发送pdf文件,条件是从包含许多文件的文件夹中只取出1mb的文件。

请帮我解决这个问题。我是网络服务新手。 如果不清楚,再问我一次。 在此先感谢。

3 个答案:

答案 0 :(得分:1)

好吧,我不知道我是否正确理解了您的要求,如果这对您的问题有帮助,但您可以尝试使用此java解决方案来过滤目录中的文件。
您将获得一个文件列表,然后您可以使用特定于Web服务的代码发送这些文件

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 :(得分: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;
}

答案 2 :(得分:0)

我不确定这是否是您想要的,但您可以选择文件并通过以下方式检查其大小:

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

File.length() Javadoc

发送大小为1 Mb的文件。