package jef.tools;
import java.io.File;
/**
* 文件名辅助操作工具
* @author Administrator
*
*/
public class FileName {
private String name;
private int index;
/**
* 构造
* @param name
*/
public FileName(String name){
this.name=name;
this.index=name.lastIndexOf('.');
if(index==-1)index=name.length();
}
/**
* 将文件名和扩展名拆成两个部分
* @return 数组,[0]是文件名部分 [1]是扩展名
*/
public String[] getAsArray(){
return new String[]{getMain(),(index==name.length()?"":name.substring(index+1))};
}
/**
* 得到文件名主体部分
* @return
*/
public String getMain() {
return name.substring(0,index);
}
/**
* 得到扩展名
* @return 总是小写
*/
public String getExt() {
if(index==name.length())return "";
return name.substring(index+1).toLowerCase();
}
/**
* 得到原始扩展名,包含点,并且保留原始大小写
*/
public String getRawExt(){
return name.substring(index);
}
/**
* 在文件名右侧(扩展名左侧)加上文字
* @param append
* @return this
*/
public FileName append(String append){
if(append==null)append="";
name=name.substring(0,index)+append+name.substring(index);
index=index+append.length();
return this;
}
/**
* 在文件名整体的右侧加上文字
* @param append 内容
* @return this
*/
public FileName appendAtLast(String append){
if(append==null)append="";
name=name.concat(append);
return this;
}
/**
* 假设文件名后添加了指定后缀后的结果<br>
* 不改变当前对象,返回“如果”在右侧加上某个文本之后的整体文件名。
* @param append
* @return 虚构文件名
*/
public String getValueIfAppend(String append){
if(append==null || append.length()==0)return name;
return new StringBuilder(name.length()+append.length()).append(name.subSequence(0, index))
.append(append).append(name.substring(index))
.toString();
}
/**
* 当右侧加上某段文本后,构造成file
* @param append 假设添加的文字
* @return 文件对象
*/
public File getFileIfAppend(String append){
return new File(getValueIfAppend(append));
}
/**
* 当右侧加上某段文本后,构造成file
* @param parent 上级文件夹
* @param append 假设添加的文字
* @return
*/
public File getFileIfAppend(String parent,String append){
return new File(parent,getValueIfAppend(append));
}
/**
* 在文件名左侧加上文字
*/
public FileName appendLeft(String append){
if(append==null)append="";
name=append.concat(name);
index=index+append.length();
return this;
}
@Override
public int hashCode() {
return name.hashCode();
}
@Override
public String toString() {
return name;
}
/**
* 设置扩展名
* @param extName
*/
public void setExt(String extName){
boolean empty=StringUtils.isEmpty(extName);
if(empty){
name=name.substring(0,index);
}else{
name=name.substring(0,index)+"."+extName;
}
}
/**
* 设置文件名主体
* @param main
*/
public void setName(String main){
if(main==null)main="";
name=main+name.substring(index);
index=main.length();
}
/**
* 将文件名拆成名称和扩展名两部分
*
* @param name
* @return
*/
public final static String[] splitExt(String name) {
int n = name.lastIndexOf('.');
if (n == -1) {
return new String[] { name, "" };
} else {
return new String[] { name.substring(0, n),
name.substring(n + 1).toLowerCase() };
}
}
}