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

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

文件操作大全(待修订)

Posted on 2009-07-05 18:23 Gavin.lee 阅读(209) 评论(0)  编辑  收藏 所属分类: Log && File Operate
package com.Gavin.tools;

import java.io.BufferedReader;
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.PrintWriter;

public class FileOperate {
//    public static void main(String[] args) throws IOException {
//        FileOperate f = new FileOperate();
//        // System.out.println(f.readFile("f:\\LinkFile.java"));
//        f.fileIsNull("D:\\java\\", "ejb");
//        // f.readLineFile("D:\\java\\","TestFile.txt");
//        // System.out.println(f.fileIsNull("f:\\","122.txt"));
//        // f.readFolderByFile("F:\\Login"); //不区分大小写
//        // System.out.println(f.createAndDeleteFolder("ss","f:\\"));
//        // System.out.println(f.createAndDeleteFile("f:\\ss\\","TestFile.dat"));
//        // f.createAndDeleteFolder("1","D:\\java\\");
//        String ss[] = new String[50]; // 定义对象数组
//        for (int i = 0; i < ss.length; i++) {
//            ss[i] = "信息技术和互联网(计算机软硬件,通讯) " + i;
//        }
//        f.writeFile("D:\\java\\", "TestFile.txt", ss);
//
//    }

    
/**
     * 文件的写入
     * 
     * 
@param filePath(文件路径)
     * 
@param fileName(文件名)
     * 
@param args[]
     * 
@throws IOException
     
*/

    
public void writeFile(String filePath, String fileName, String[] args)
            
throws IOException {
        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();
        }

        System.out.println(
"写入成功!");
        fw.close();
        out.close();
    }


    
/**
     * 文件的写入
     * 
     * 
@param filePath(文件路径)
     * 
@param fileName(文件名)
     * 
@param args
     * 
@throws IOException
     
*/

    
public void writeFile(String filePath, String fileName, String args)
            
throws IOException {
        FileWriter fw 
= new FileWriter(filePath + fileName);
        fw.write(args);
        fw.close();
    }


    
/**
     * 创建与删除文件
     * 
     * 
@param filePath
     * 
@param fileName
     * 
@return 创建成功返回true
     * 
@throws IOException
     
*/

    
public boolean createAndDeleteFile(String filePath, String fileName)
            
throws IOException {
        
boolean result = false;
        File file 
= new File(filePath, fileName);
        
if (file.exists()) {
            
if (file.isFile()) {
                file.delete();
                result 
= true;
                System.out.println(
"文件已经删除!");
            }
 else {
                System.out.println(
"对不起,该路径为目录!");

            }

        }
 else {
            file.createNewFile(); 
// jdk5.0的新方法
            result = true;
            System.out.println(
"文件已经创建!");
        }

        
return result;
    }


    
/**
     * 创建和删除目录
     * 
     * 
@param folderName
     * 
@param filePath
     * 
@return 删除成功返回true
     
*/

    
public boolean createAndDeleteFolder(String folderName, String filePath) {
        
boolean result = false;
        
try {
            File file 
= new File(filePath + folderName);
            
if (file.exists()) {
                
if (file.isDirectory()) {
                    file.delete();
                    System.out.println(
"目录已经存在,已删除!");
                    result 
= true;
                }
 else {
                    System.out.println(
"对不起,该路径为文件!");
                }

            }
 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 filePath
     * 
@param fileName
     * 
@return 为空返回true
     * 
@throws IOException
     
*/

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

        fr.close();
        
return result;
    }


    
/**
     * 读取文件中的所有内容
     * 
     * 
@param filePath
     * 
@param fileName
     * 
@throws IOException
     
*/

    
public void readAllFile(String filePath, String fileName)
            
throws IOException {
        FileReader fr 
= new FileReader(filePath + fileName);
        
// PrintWriter pr=new PrintWriter(fr);
        
// pr.print
        int count = fr.read();
        
while (count != -1{
            System.out.print((
char) count);
            count 
= fr.read();
            
// System.out.println();
            if (count == 13{
                fr.skip(
1);
                System.out.print(
"跳过!");
            }

        }

        System.out.println();
        fr.close();
    }


    
/**
     * 一行一行的读取文件中的数据
     * 
     * 
@param filePath
     * 
@param fileName
     * 
@throws IOException
     
*/

    
public void readLineFile(String filePath, String fileName)
            
throws IOException {
        FileReader fr 
= new FileReader(filePath + fileName);
        BufferedReader br 
= new BufferedReader(fr);
        String line 
= br.readLine();
        
while (line != null{
            System.out.println(line);
            line 
= br.readLine();
        }

        br.close();
        fr.close();
    }



    
/**
     * 
@see 新建目录,通用性不好,只能建立一级
     * 
@param folderPath
     *            String 如 c:/floder
     * 
@return boolean
     
*/

    
public void newFolder(String folderPath) {
        
try {
            String filePath 
= folderPath;
            filePath 
= filePath.toString();
            java.io.File myFilePath 
= new java.io.File(filePath);
            
if (!myFilePath.exists()) {
                myFilePath.mkdir();
            }

        }
 catch (Exception e) {
            System.out.println(
"新建目录操作出错");
            e.printStackTrace();
        }

    }

    
public static void main(String args[]) {        
        FileOperate fo 
= new FileOperate();
        fo.newFolder(
"c:/test");
        System.out.println(fo.getProjectRootPath());
    }

    
/**
     * 
@see 新建文件
     * 
@param filePathAndName
     *            String 文件路径及名称 如c:/fqf.txt
     * 
@param fileContent
     *            String 文件内容
     * 
@return boolean
     
*/

    
public void newFile(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);
            resultFile.close();

        }
 catch (Exception e) {
            System.out.println(
"新建文件操作出错");
            e.printStackTrace();

        }

    }



    
/**
     * 
@see 删除文件
     * 
@param filePathAndName
     *            String 文件路径及名称 如c:/fqf.txt
     * 
@param fileContent
     *            String
     * 
@return boolean
     
*/

    
public void delFile(String filePathAndName) {
        
try {
            String filePath 
= filePathAndName;
            filePath 
= filePath.toString();
            java.io.File myDelFile 
= new java.io.File(filePath);
            myDelFile.delete();
            System.out.println(myDelFile 
+ "\\文件存在,已删除。");

        }
 catch (Exception e) {
            System.out.println(
"删除文件操作出错");
            e.printStackTrace();

        }


    }


    
/**
     * 
@see 删除文件夹
     * 
@param filePathAndName
     *            String 文件夹路径及名称 如c:/fqf
     * 
@param fileContent
     *            String
     * 
@return boolean
     
*/

    
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) {
            System.out.println(
"删除文件夹操作出错");
            e.printStackTrace();

        }


    }


    
/**
     * 
@see 删除文件夹里面的所有文件
     * 
@param path
     *            String 文件夹路径 如 c:/fqf
     
*/

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

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

        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]);// 再删除空文件夹
            }

        }

    }


    
/**
     * 
@see 复制单个文件
     * 
@param oldPath
     *            String 原文件路径 如:c:/fqf.txt
     * 
@param newPath
     *            String 复制后路径 如:f:/fqf.txt
     * 
@return boolean
     
*/

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

                inStream.close();
            }

        }
 catch (Exception e) {
            System.out.println(
"复制单个文件操作出错");
            e.printStackTrace();

        }


    }


    
/**
     * 
@see 复制整个文件夹内容
     * 
@param oldPath
     *            String 原文件路径 如:c:/fqf
     * 
@param newPath
     *            String 复制后路径 如:f:/fqf/ff
     * 
@return boolean
     
*/

    
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) {
            System.out.println(
"复制整个文件夹内容操作出错");
            e.printStackTrace();

        }


    }


    
/**
     * 
@see 移动文件到指定目录
     * 
@param oldPath
     *            String 如:c:/fqf.txt
     * 
@param newPath
     *            String 如:d:/fqf.txt
     
*/

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

    }


    
/**
     * 移动文件到指定目录
     * 
@param oldPath
     *            String 如:c:/fqf.txt
     * 
@param newPath
     *            String 如:d:/fqf.txt
     
*/

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

    }



    
/**
     * 
@see 获得系统根目录绝对路径
     * 
@return D:/MyWorkSpace/tools/WebRoot/
     
*/

    
public String getProjectRootPath() {

        String sysPath 
= this.getClass().getResource("/").getPath();
        
// 对路径进行修改
        sysPath = sysPath.substring(1, sysPath.length() - 16);
        
return sysPath;

    }

    
}


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


网站导航: