File file = new File("文件夹路径");
File[] xlsxList = filelistFiles((dir, name)->nameendsWith("xlsx"));
import javaximageioImageIO;
import javaawtimageBufferedImage;
import javaioByteArrayInputStream;
import javaioByteArrayOutputStream;
import javaioFile;
import javaioIOException;
public class ImageUtils {
public static void main(String[] args) {
String str = img2Binary("C:\\Users\\hny\\Desktop\\faviconjpg");
Systemoutprintln(str);
binary2Img("C:\\Users\\hny\\Desktop\\favicon2jpg", str);
}
/
转二进制字符串
@param path 路径
@return
/
public static String img2Binary(String path) {
File file = new File(path);
if (!fileexists()) {
return null;
}
try {
BufferedImage bi = ImageIOread(file);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
String suffix = getSuffix(path);
ImageIOwrite(bi, suffix, baos);
byte[] bytes = baostoByteArray();
return new sunmiscBASE64Encoder()encodeBuffer(bytes)trim();
} catch (IOException e) {
eprintStackTrace();
}
return null;
}
/
字符串转文件
@param path 路径
@param imgBinary 字符串
/
public static void binary2Img(String path, String imgBinary) {
try {
File file = new File(path);
byte[] bytes1 = new sunmiscBASE64Decoder()decodeBuffer(imgBinary);
ByteArrayInputStream bais = new ByteArrayInputStream(bytes1);
BufferedImage bi1 = ImageIOread(bais);
String suffix = getSuffix(path);
ImageIOwrite(bi1, suffix, file);
} catch (IOException e) {
eprintStackTrace();
}
}
/
获取后缀名
@param path
@return
/
private static String getSuffix(String path) {
int index = pathcontains("") pathlastIndexOf("") : -1;
if (index > -1) {
return pathsubstring(index + 1);
}
return null;
}
}
java web开发中,使用文件 *** 作类来上传并读取,如下代码:
@desc: 处理工具@author: bingye
@createTime: 2015-3-17 下午04:25:32
@version: v10
/
public class ImageUtil {
/
将写到客户端
@author: bingye
@createTime: 2015-3-17 下午04:36:04
@history:
@param image
@param response void
/
public static void writeImage(byte[] image,>
获取文件类型,一般的是列出目前所有的文件类型,根据表头进行相应判断,示例如下:
/件头是位于文件开头的一段承担一定任务的数据,一般都在开头的部分。
头文件作为一种包含功能函数、数据接口声明的载体文件,用于保存程序的声明(declaration),而定义文件用于保存程序的实现 (implementation)。
为了解决在用户上传文件的时候在服务器端判断文件类型的问题,故用获取文件头的方式,直接读取文件的前几个字节,来判断上传文件是否符合格式。具体代码如下:
Java代码 :
/
package comyonyousudfile;
import javaioFileInputStream;
import javaioIOException;
import javautilHashMap;
/
获取和判断文件头信息
@author Sud
/
public class GetTypeByHead {
//缓存文件头信息-文件头信息
public static final HashMap<String, String> mFileTypes = new HashMap<String, String>();
static {
// images
mFileTypesput("FFD8FF", "jpg");
mFileTypesput("89504E47", "png");
mFileTypesput("47494638", "gif");
mFileTypesput("49492A00", "tif");
mFileTypesput("424D", "bmp");
//
mFileTypesput("41433130", "dwg"); // CAD
mFileTypesput("38425053", "psd");
mFileTypesput("7B5C727466", "rtf"); // 日记本
mFileTypesput("3C3F786D6C", "xml");
mFileTypesput("68746D6C3E", "html");
mFileTypesput("44656C69766572792D646174653A", "eml"); // 邮件
mFileTypesput("D0CF11E0", "doc");
mFileTypesput("5374616E64617264204A", "mdb");
mFileTypesput("252150532D41646F6265", "ps");
mFileTypesput("255044462D312E", "pdf");
mFileTypesput("504B0304", "docx");
mFileTypesput("52617221", "rar");
mFileTypesput("57415645", "wav");
mFileTypesput("41564920", "avi");
mFileTypesput("2E524D46", "rm");
mFileTypesput("000001BA", "mpg");
mFileTypesput("000001B3", "mpg");
mFileTypesput("6D6F6F76", "mov");
mFileTypesput("3026B2758E66CF11", "asf");
mFileTypesput("4D546864", "mid");
mFileTypesput("1F8B08", "gz");
}
/
根据文件路径获取文件头信息
@param filePath
文件路径
@return 文件头信息
/
public static String getFileType(String filePath){
Systemoutprintln(getFileHeader(filePath));
Systemoutprintln(mFileTypesget(getFileHeader(filePath)));
return mFileTypesget(getFileHeader(filePath));
}
/
根据文件路径获取文件头信息
@param filePath
文件路径
@return 文件头信息
/
public static String getFileHeader(String filePath){
FileInputStream is = null;
String value = null;
try {
is = new FileInputStream(filePath);
byte[] b = new byte[4];
/int read() 从此输入流中读取一个数据字节。
int read(byte[] b) 从此输入流中将最多 blength 个字节的数据读入一个 byte 数组中。
int read(byte[] b, int off, int len) 从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。
/
isread(b, 0, blength);
value = bytesToHexString(b);
} catch (Exception e){
} finally {
if (null != is){
try {
isclose();
} catch (IOException e){
}
}
}
return value;
}
/
将要读取文件头信息的文件的byte数组转换成string类型表示
@param src
要读取文件头信息的文件的byte数组
@return 文件头信息
/
private static String bytesToHexString(byte[] src){
StringBuilder builder = new StringBuilder();
if (src == null || srclength <= 0){
return null;
}
String hv;
for (int i = 0; i < srclength; i++){
// 以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式,并转换为大写
hv = IntegertoHexString(src[i] & 0xFF)toUpperCase();
if (hvlength() < 2){
builderappend(0);
}
builderappend(hv);
}
Systemoutprintln(buildertoString());
return buildertoString();
}
public static void main(String[] args)throws Exception {
final String fileType = getFileType("E:/Java编程思想读书笔记docx");
Systemoutprintln(fileType);
}
}
Java实现获取指定路径下的指定格式的文件代码如下:
package filenameFilter;
import javaioFile;
/
实现功能:
获取指定路径下的指定格式的文件;
/
public class Test {
public static void listPath(File file) {
// 接收筛选过后的文件对象数组
//用文件对象调用listFiles(FilenameFilter filter);方法,
//返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录
File files[] = filelistFiles(new MyFilenameFilter());
///遍历出指定文件路径下符合条件的文件
for (File f : files) {
Systemoutprintln(f);
}/
//遍历出指定文件路径下的所有符合筛选条件的文件
for(File f: files){
if(fisDirectory()){
listPath(f);
}else{
Systemoutprintln(f);
}
}
}
public static void main(String[] args) {
// 创建指定目录的文件对象
File file = new File("F:\\test");
// 调用文件晒筛选的方法,并将文件对象出入,
listPath(file);
}
}
package filenameFilter;
import javaioFile;
import javaioFilenameFilter;
//实现FilenameFilter接口,可用于过滤器文件名
//本方法实现的是筛选指定格式结尾的文件
public class MyFilenameFilter implements FilenameFilter {
/
@param args
实现功能; 实现FilenameFilter接口,定义出指定的文件筛选器
/
@Override
//重写accept方法,测试指定文件是否应该包含在某一文件列表中
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
// 创建返回值
boolean flag = true;
// 定义筛选条件
//endWith(String str);判断是否是以指定格式结尾的
if (nametoLowerCase()endsWith("jpg")) {
} else if (nametoLowerCase()endsWith("txt")) {
} else if (nametoLowerCase()endsWith("gif")) {
} else {
flag = false;
}
// 返回定义的返回值
//当返回true时,表示传入的文件满足条件
return flag;
}
}
同意楼上的分析,另外我想提个建议,代码为了便于阅读可以试着分步骤写。
就先定义filename和filepath,然后你在后续的 *** 作中想要出现在设定的某一区域中
就可以直接使用filename,将要上传的文件名是 itsgetIPTimeStampRand()+""+itemgetName()split("\\")[1]
以上就是关于java中怎么获取所有后缀为.xlsx的路径全部的内容,包括:java中怎么获取所有后缀为.xlsx的路径、java如何把图片转换成二进制并存到oracle的blob中,求代码、java web开发,上传图片并读取等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)