Java中的文件操作类

来源:互联网 发布:淘宝生意经 编辑:程序博客网 时间:2024/06/05 01:10
import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.StreamCorruptedException;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import com.ExchangeWares.global.GlobalParamClass;public class FileOperate { // 主要用于文件操作private static FileOperate _instanceFileOperate = null;private File fileBase = null;private FileOutputStream fos = null;private ObjectOutputStream oosObjectOutputStream = null;private FileInputStream fis = null;private ObjectInputStream oosInputStream = null;private String[] splitsStrings = new String[] { "\\", "/" };public static FileOperate getInstance() { // 实现单实例模式if (_instanceFileOperate == null) {_instanceFileOperate = new FileOperate();}return _instanceFileOperate;}public boolean getFileFromNet(File f, String urlString) { // 从网络中获取数据InputStream isStream = null;FileOutputStream fosFileOutputStream = null;URLConnection connection = null;int readBytes = 0;int allFileBytes = 0;int len = 0;URL url = null;try {url = new URL(GlobalParamClass.WEB_PAGE_ADDRESS_STRING + urlString);connection = url.openConnection(); // 打开网络连接allFileBytes = connection.getContentLength(); // 获取文件总字节数if (f.exists() && f.length() == allFileBytes) { // 表示已经存在了readBytes = allFileBytes;return true;}isStream = connection.getInputStream(); // 获取网络输入流fosFileOutputStream = new FileOutputStream(f); // 获取输出文件GlobalParamClass.clearBytesBuffer(); // 继续清零while ((len = isStream.read(GlobalParamClass.BUFFER)) > 0) { // 读取网络数据fosFileOutputStream.write(GlobalParamClass.BUFFER, 0, len); // 写入到文件GlobalParamClass.clearBytesBuffer(); // 继续清零readBytes += len;}} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();return false;} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();return false;} finally {if (isStream != null) {try {isStream.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if (fosFileOutputStream != null) {try {fosFileOutputStream.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if (readBytes != allFileBytes) {f.delete();return false;}}return true;}public boolean copyTo(String resString, String destString) { // 拷贝文件操作File resFile;int len = 0;boolean res = false;resFile = new File(resString);if (!resFile.exists()) // 源文件不存在{return false;}if (getFileCreate(destString) == -1) {return false;}try {fis = new FileInputStream(resFile);fos = new FileOutputStream(destString); // 获取输出流GlobalParamClass.clearBytesBuffer();while ((len = fis.read(GlobalParamClass.BUFFER)) != -1) {fos.write(GlobalParamClass.BUFFER, 0, len);GlobalParamClass.clearBytesBuffer(); // 继续清零}res = true;} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} // 获取输入流catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {fis.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {fos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return res;}public String getFileName(String url, int index) // 获取文件名,包括类型{String res_FileNameString = null;String splitStr = null;int lastIndex = 0;splitStr = splitsStrings[index];if ((lastIndex = url.lastIndexOf(splitStr)) != -1) {res_FileNameString = url.substring(lastIndex + 1);}return res_FileNameString;}public String getFilePath(String url, int index) // 获取文件路径{String res_PathString = null;String splitStr = null;int lastIndex = 0;splitStr = splitsStrings[index];if ((lastIndex = url.lastIndexOf(splitStr)) != -1) {res_PathString = url.substring(0, lastIndex);}return res_PathString;}public String getFileType(String url) // 获取文件的扩展名{String res_TypeString = null;int lastIndex = 0;if ((lastIndex = url.lastIndexOf(".")) != -1) {res_TypeString = url.substring(lastIndex + 1);}return res_TypeString;}public boolean getDirectoryCreate(String dirPath) { // 创建文件夹fileBase = new File(dirPath);if (!fileBase.exists()) {return fileBase.mkdirs();}return true;}public int getFileCreate(String filePath) // 创建文件{boolean find = false;String filePathString = null;fileBase = new File(filePath);try {if (!fileBase.exists()) {filePathString = getFilePath(filePath, 1);if (filePathString == null) // 表示return -1;if (!filePathString.equals("")) {if (!getDirectoryCreate(filePathString)) {return -1;}}fileBase = new File(filePath);if (fileBase.createNewFile()) {return 0; // 创建成功}return -1; // 创建失败} else {find = true;}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();return -1;}if (find)return 1;elsereturn -1;}// 将对象写入到文件中public void writeObjectIntoFile(Object obj, String filePathString) {try {fos = new FileOutputStream(filePathString);oosObjectOutputStream = new ObjectOutputStream(fos);oosObjectOutputStream.writeObject(obj);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {fos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}// 从文件中读取对象public Object readObjectFromFile(String filePathString) {Object obj = null;try {fis = new FileInputStream(filePathString);oosInputStream = new ObjectInputStream(fis);obj = oosInputStream.readObject();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (StreamCorruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {if (oosInputStream != null) {oosInputStream.close();}if (fis != null) {fis.close();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return obj;}}
主要用于文件的创建,获取文件的名称,类型,网络中获取文件,文件序列化