我的问题是我想通过网络服务发送pdf文件,条件是从包含许多文件的文件夹中只取出1mb的文件。
请帮我解决这个问题。我是网络服务新手。 如果不清楚,再问我一次。 在此先感谢。
答案 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的文件。