Files
JavaUtils/src/net/droidtech/io/DroidFile.java

120 lines
2.5 KiB
Java
Raw Normal View History

2024-08-15 18:49:29 +08:00
package net.droidtech.io;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.security.MessageDigest;
public class DroidFile extends File{
private static final long serialVersionUID = 7311643678032690177L;
private File file=null;
public DroidFile(String path){
super(path);
file=new File(path);
}
public DataInputStream getInputStream(){
try {
if(file.exists()&&!file.isDirectory()){
DataInputStream in=new DataInputStream(new FileInputStream(file));
return in;
}else{
return null;
}
} catch (Exception e) {
// TODO Auto-generated catch block
return null;
}
}
public DataOutputStream getOutputStream(){
try {
if(file.exists()&&!file.isDirectory()){
DataOutputStream out=new DataOutputStream(new FileOutputStream(file));
return out;
}else{
return null;
}
} catch (Exception e) {
// TODO Auto-generated catch block
return null;
}
}
public void copyTo(File target){
DroidFile file=new DroidFile(target.getAbsolutePath());
if(file.createNewFile()){
StreamWriter writer=new StreamWriter();
writer.writeStream(this.getInputStream(),file);
}
}
@Override
public boolean createNewFile(){
try {
File parentDir=new File(file.getParent());
if(!parentDir.exists()){
parentDir.mkdirs();
}
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
return false;
}
return file.exists();
}
@Override
public boolean mkdir(){
file.mkdirs();
return file.exists();
}
public String getMD5String(){
byte[] md5data=getMD5Bytes();
if(md5data!=null){
return new BigInteger(1,md5data).toString(16);
}else{
return null;
}
}
public byte[] getMD5Bytes(){
DataInputStream in=this.getInputStream();
if(in==null){
return null;
}
try {
byte[] buffer=new byte[4096];
MessageDigest md5=MessageDigest.getInstance("MD5");
while(true){
int count=in.read(buffer);
if(count!=-1){
md5.update(buffer,0,count);
}else{
in.close();
break;
}
}
return md5.digest();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
public DroidFile getChildFile(String name){
if(!this.isDirectory()){
return null;
}
return new DroidFile(this.getAbsolutePath()+File.separator+name);
}
}