无线&移动互联网技术研发

换位思考·····
posts - 19, comments - 53, trackbacks - 0, articles - 283
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

java 文件操作类

Posted on 2009-05-12 18:16 Gavin.lee 阅读(423) 评论(0)  编辑  收藏 所属分类: Log && File Operate

此操作类正在完善中……

package com.Gavin.io;

/**
 * 文件操作类
 * 
@author Gavin.lee
 * @date 2009-05-04 12:17pm
 
*/

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;

public class FileOperator {
    
private String message;

    

    
/**
     * 读取文件内容
     * 
@param filePathAndName
     *            带有完整绝对路径的文件名
     * 
@param encoding
     *            文件打开的编码方式
     * 
@return 返回文本文件的内容
     
*/


    
public String readFileByEncoding(String filePathAndName, String encoding) {
        StringBuffer str 
= new StringBuffer("");
        String st 
= "";
        
try {
            FileInputStream fs 
= new FileInputStream(filePathAndName);
            InputStreamReader isr;
            
if (encoding == null || encoding.trim().equals("")) {
                isr 
= new InputStreamReader(fs);
            }
 else {
                isr 
= new InputStreamReader(fs, encoding);
            }

            BufferedReader br 
= new BufferedReader(isr);
            
try {
                String data 
= "";
                
while ((data = br.readLine()) != null{
                    str.append(data 
+ " ");
                }

            }
 catch (Exception e) {
                str.append(e.toString());
            }

            st 
= str.toString();
        }
 catch (IOException es) {
            st 
= "";
        }

        
return st;
    }




    
/**
     * 按行读取指定文件,也可计算文件行数
     * 
     * 
@param filePath
     * 
@param fileName
     
*/

    
public void readLineFile(String filePath, String fileName, String encoding) {
        
try {
            BufferedReader br 
= new BufferedReader(new InputStreamReader(new FileInputStream(filePath + fileName),encoding));
            String line 
= "";
            String result 
= "";
            
int i = 0;
            
while ((line = br.readLine()) != null{
                result 
= result + line + "\r\n";
                i
++;
            }

            System.out.println(result);
            System.out.println(
"该文件行数:" + i);
            br.close();
//            fr.close();
        }
 catch (IOException e) {
            e.printStackTrace();
        }

    }


     
/**
     * 完全读取指定目录下的文件
     * 
     * 
@param filePath
     * 
@param fileName
     
*/

    
public void readAllFile(String filePath, String fileName) {
        
try {
            FileReader fr 
= new FileReader(filePath + fileName);
            
int count = fr.read();
            
while (count != -1{
                System.out.print((
char) count);
                count 
= fr.read();
                
if (count == 13{
                    fr.skip(
1);
                }

            }

            fr.close();
        }
 catch (Exception e) {
            e.printStackTrace();
        }

    
    }

    
/**
     * 新建目录
     * 
     * 
@param folderPath
     *            目录
     * 
@return 返回目录创建后的路径
     
*/

    
public String createFolder(String folderPath) {
        String txt 
= folderPath;
        
try {
            File myFilePath 
= new File(txt);
            txt 
= folderPath;
            
if (!myFilePath.exists()) {
                myFilePath.mkdir();
            }

        }
 catch (Exception e) {
            message 
= "创建目录操作出错";
        }

        
return txt;
    }


    
/**
     * 多级目录创建 ????
     * 
     * 
@param folderPath
     *            准备要在本级目录下创建新目录的目录路径 例如 c:myf
     * 
@param paths
     *            无限级目录参数,各级目录以单数线区分 例如 a|b|c
     * 
@return 返回创建文件后的路径 例如 c:myfa c
     
*/

    
public String createFolders(String folderPath, String paths) {
        String txts 
= folderPath;
        
try {
            String txt;
            txts 
= folderPath;
            StringTokenizer st 
= new StringTokenizer(paths, "|");
            
for (int i = 0; st.hasMoreTokens(); i++{
                txt 
= st.nextToken().trim();
                
if (txts.lastIndexOf("/"!= -1{
                    txts 
= createFolder(txts + txt);
                }
 else {
                    txts 
= createFolder(txts + txt + "/");
                }

            }

        }
 catch (Exception e) {
            message 
= "创建目录操作出错!";
        }

        
return txts;
    }


    
/**
     * 新建文件
     * 
     * 
@param filePathAndName
     *            文本文件完整绝对路径及文件名
     * 
@param fileContent
     *            文本文件内容
     * 
@return
     
*/

    
public void createFile(String filePathAndName, String fileContent) {

        
try {
            String filePath 
= filePathAndName;
            filePath 
= filePath.toString();
            File myFilePath 
= new File(filePath);
            
if (!myFilePath.exists()) {
                myFilePath.createNewFile();
            }

            FileWriter resultFile 
= new FileWriter(myFilePath);
            PrintWriter myFile 
= new PrintWriter(resultFile);
            String strContent 
= fileContent;
            myFile.println(strContent);
            myFile.close();
            resultFile.close();
        }
 catch (Exception e) {
            message 
= "创建文件操作出错";
        }

    }


    
/**
     * 有编码方式的文件创建
     * 
     * 
@param filePathAndName
     *            文本文件完整绝对路径及文件名
     * 
@param fileContent
     *            文本文件内容
     * 
@param encoding
     *            编码方式 例如 GBK 或者 UTF-8
     * 
@return
     
*/

    
public void createFile(String filePathAndName, String fileContent, String encoding) {
        
try {
            String filePath 
= filePathAndName;
            filePath 
= filePath.toString();
            File myFilePath 
= new File(filePath);
            
if (!myFilePath.exists()) {
                myFilePath.createNewFile();
            }

            PrintWriter myFile 
= new PrintWriter(myFilePath, encoding);
            String strContent 
= fileContent;
            myFile.println(strContent);
            myFile.close();
        }
 catch (Exception e) {
            message 
= "创建文件操作出错";
        }

    }


    
/**
     * 删除文件
     * 
     * 
@param filePathAndName
     *            文本文件完整绝对路径及文件名
     * 
@return Boolean 成功删除返回true遭遇异常返回false
     
*/

    
public boolean delFile(String filePathAndName) {
        
boolean bea = false;
        
try {
            String filePath 
= filePathAndName;
            File myDelFile 
= new File(filePath);
            
if (myDelFile.exists()) {
                myDelFile.delete();
                bea 
= true;
            }
 else {
                bea 
= false;
                message 
= (filePathAndName + "删除文件操作出错");
            }

        }
 catch (Exception e) {
            message 
= e.toString();
        }

        
return bea;
    }


    
/**
     * 删除文件夹
     * 
     * 
@param folderPath
     *            文件夹完整绝对路径
     * 
@return
     
*/

    
public void delFolder(String folderPath) {
        
try {
            delAllFile(folderPath); 
// 删除完里面所有内容
            String filePath = folderPath;
            filePath 
= filePath.toString();
            java.io.File myFilePath 
= new java.io.File(filePath);
            myFilePath.delete(); 
// 删除空文件夹
        }
 catch (Exception e) {
            message 
= ("删除文件夹操作出错");
        }

    }


    
/**
     * 删除指定文件夹下所有文件
     * 
     * 
@param path
     *            文件夹完整绝对路径
     * 
@return
     * 
@return
     
*/

    
public boolean delAllFile(String path) {
        
boolean bea = false;
        File file 
= new File(path);
        
if (!file.exists()) {
            
return bea;
        }

        
if (!file.isDirectory()) {
            
return bea;
        }

        String[] tempList 
= file.list();
        File temp 
= null;
        
for (int i = 0; i < tempList.length; i++{
            
if (path.endsWith(File.separator)) {
                temp 
= new File(path + tempList[i]);
            }
 else {
                temp 
= new File(path + File.separator + tempList[i]);
            }

            
if (temp.isFile()) {
                temp.delete();
            }

            
if (temp.isDirectory()) {
                delAllFile(path 
+ "/" + tempList[i]);// 先删除文件夹里面的文件
                delFolder(path + "/" + tempList[i]);// 再删除空文件夹
                bea = true;
            }

        }

        
return bea;
    }


    
/**
     * 复制单个文件
     * 
     * 
@param oldPathFile
     *            准备复制的文件源
     * 
@param newPathFile
     *            拷贝到新绝对路径带文件名
     * 
@return
     
*/

    
public void copyFile(String oldPathFile, String newPathFile) {
        
try {
            
int bytesum = 0;
            
int byteread = 0;
            File oldfile 
= new File(oldPathFile);
            
if (oldfile.exists()) // 文件存在时
                InputStream inStream = new FileInputStream(oldPathFile); // 读入原文件
                FileOutputStream fs = new FileOutputStream(newPathFile);
                
byte[] buffer = new byte[1444];
                
while ((byteread = inStream.read(buffer)) != -1{
                    bytesum 
+= byteread; // 字节数 文件大小
                    System.out.println(bytesum);
                    fs.write(buffer, 
0, byteread);
                }

                inStream.close();
            }

        }
 catch (Exception e) {
            message 
= ("复制单个文件操作出错");
        }

    }


    
/**
     * 复制整个文件夹的内容
     * 
     * 
@param oldPath
     *            准备拷贝的目录
     * 
@param newPath
     *            指定绝对路径的新目录
     * 
@return
     
*/

    
public void copyFolder(String oldPath, String newPath) {
        
try {
            
new File(newPath).mkdirs(); // 如果文件夹不存在 则建立新文件夹
            File a = new File(oldPath);
            String[] file 
= a.list();
            File temp 
= null;
            
for (int i = 0; i < file.length; i++{
                
if (oldPath.endsWith(File.separator)) {
                    temp 
= new File(oldPath + file[i]);
                }
 else {
                    temp 
= new File(oldPath + File.separator + file[i]);
                }

                
if (temp.isFile()) {
                    FileInputStream input 
= new FileInputStream(temp);
                    FileOutputStream output 
= new FileOutputStream(newPath
                            
+ "/" + (temp.getName()).toString());
                    
byte[] b = new byte[1024 * 5];
                    
int len;
                    
while ((len = input.read(b)) != -1{
                        output.write(b, 
0, len);
                    }

                    output.flush();
                    output.close();
                    input.close();
                }

                
if (temp.isDirectory()) {// 如果是子文件夹
                    copyFolder(oldPath + "/" + file[i], newPath + "/" + file[i]);
                }

            }

        }
 catch (Exception e) {
            message 
= "复制整个文件夹内容操作出错";
        }

    }


    
/**
     * 移动文件
     * 
     * 
@param oldPath
     * 
@param newPath
     * 
@return
     
*/

    
public void moveFile(String oldPath, String newPath) {
        copyFile(oldPath, newPath);
        delFile(oldPath);
    }


    
/**
     * 移动目录
     * 
     * 
@param oldPath
     * 
@param newPath
     * 
@return
     
*/

    
public void moveFolder(String oldPath, String newPath) {
        copyFolder(oldPath, newPath);
        delFolder(oldPath);
    }


    
public String getMessage() {
        
return this.message;
    }


    
/**
     * 向 指定文件输入数据,该文件存在时重洗,不存在时创建。
     * 
     * 
@param filename
     * 
@param fin
     
*/

    
public void fwriter(String filename, String fin) {
        
try {
            PrintWriter out 
= new PrintWriter(new BufferedWriter(
                    
new FileWriter(filename)), true);
            out.println(fin);
            out.flush();
            out.close();
        }
 catch (IOException e) {
            e.printStackTrace();
        }

    }


    
// up
    public void writeFile(String filePath, String fileName, String args) {
        
try {
            FileWriter fw 
= new FileWriter(filePath + fileName);
            fw.write(args);
            fw.close();
        }
 catch (IOException e) {
            e.printStackTrace();
        }


    }


    
/**
     * 以数组形式向文件中输入数据
     * 
     * 
@param filePath
     * 
@param fileName
     * 
@param args
     
*/

    
public void writeFile(String filePath, String fileName, String[] args) {
        
try {
            FileWriter fw 
= new FileWriter(filePath + fileName);
            PrintWriter out 
= new PrintWriter(fw);
            
for (int i = 0; i < args.length; i++{
                out.write(args[i]);
                out.println();
                out.flush();
            }

            fw.close();
            out.close();
        }
 catch (IOException e) {
            e.printStackTrace();
        }


    }


    
/**
     * 创建、删除文件,有则删除,无则创建
     * 
     * 
@param filePath
     * 
@param fileName
     * 
@return
     
*/

    
public boolean createAndDeleteFile(String filePath, String fileName) {
        
boolean result = false;
        File file 
= new File(filePath, fileName);
        
if (file.exists()) {
            file.delete();
            result 
= true;
            System.out.println(
"删除文件成功");
        }
 else {
            
try {
                file.createNewFile();
            }
 catch (IOException e) {
                e.printStackTrace();
            }

            result 
= true;
            System.out.println(
"创建文件成功");
        }

        
return result;
    }


    
/**
     * 在指定绝对路径的目录下创建目录
     * 
     * 
@param filePath
     * 
@param folderName
     
*/

    
public synchronized void createFolder(String filePath, String folderName) {
        
try {
            String[] st 
= folderName.split("/");
            
for (int i = 0; i < st.length; i++{
                filePath 
= filePath + st[i] + "/";
                File file 
= new File(filePath);
                File parentFile 
= new File(file.getParent());
                
if (!parentFile.exists()) {
                    parentFile.mkdir();
                }

                
if (!file.exists()) {
                    file.mkdir();
                }

            }

        }
 catch (Exception ex) {
            System.out.println(
"CreateAndDeleteFolder is error:" + ex);
        }

    }


    
/**
     * 创建、删除目录
     * 
     * 
@param folderName
     * 
@param filePath
     * 
@return
     
*/

    
public boolean createAndDeleteFolder(String folderName, String filePath) {
        
boolean result = false;
        
try {
            File file 
= new File(filePath + folderName);
            
if (file.exists()) {
                file.delete();
                System.out.println(
"目录已经存在,已删除!");
                result 
= true;
            }
 else {
                file.mkdir();
                System.out.println(
"目录不存在,已经建立!");
                result 
= true;
            }

        }
 catch (Exception ex) {
            result 
= false;
            System.out.println(
"CreateAndDeleteFolder is error:" + ex);
        }

        
return result;
    }


    
/**
     * 指定目录下的文件。
     * 
     * 
@param filePath
     
*/

    
public void readFolderByFile(String filePath) {
        File file 
= new File(filePath);
        File[] tempFile 
= file.listFiles();
        
for (int i = 0; i < tempFile.length; i++{
            
if (tempFile[i].isFile()) {
                System.out.println(
"File : " + tempFile[i].getName());
            }

            
if (tempFile[i].isDirectory()) {
                System.out.println(
"Directory : " + tempFile[i].getName());
            }

        }

    }


    
/**
     * 判断文件是否为空
     * 
     * 
@param args
     
*/

    
public boolean fileIsNull(String filePath, String fileName) {
        
boolean result = false;
        
try {
            FileReader fr 
= new FileReader(filePath + fileName);
            
if (fr.read() == -1{
                result 
= true;
                System.out.println(fileName 
+ "该文件中没有数据");
            }
 else {
                System.out.println(fileName 
+ "该文件中有数据");
            }

            fr.close();
        }
 catch (IOException e) {
            e.printStackTrace();
        }


        
return result;
    }


    
public static void main(String args[]) {
        
// System.out.println(new
        
// FileOperate().readTxt("E:\\Gavin_workspace\\Gavin\\src\\com\\Gavin\\tools\\util\\FileOperate.java",
// "gbk"));
        
// System.out.println(new
        
// FileOperate().createFolder("E:\\Gavin_workspace\\Gavin\\src\\com\\Gavin\\tools\\util\\floder"));

//        new FileOperator().createFile(
//                        "E:\\Gavin_workspace\\Gavin\\WebRoot\\WriteLog.txt",
//                        "testfile"); // succ
//        new FileOperator().createFile(
//                "E:\\Gavin_workspace\\Gavin\\WebRoot\\WriteLog\\WriteLog.txt",
//                "testfile"); // fail
        
        FileOperator fo 
= new FileOperator();
//        fo.readFileByEncoding("d:/test", "GBK");
        fo.readLineFile("d:/""新建 文本文档.txt""gb2312");
    }

}


只有注册用户登录后才能发表评论。


网站导航: