Java文件處理類
包含一些對文件的基本操作。import java.io.*; import java.util.ArrayList; import java.util.List;
public class fileTest {
static int countFiles=0; static int countFolders=0;
public static void createFile(String filepath) { File file=new File(filepath); if(file.exists()) { System.out.println("目標文件已經存在!"); return; } if(filepath.endsWith(File.separator)) { System.out.println("目標文件不能為目錄!"); return; } try { if(file.createNewFile()) System.out.println("文件創建成功!"); else { System.out.println("文件創建失敗!"); return; } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
public static void createDir(String dirname) { if(!dirname.endsWith(File.separator)) dirname=dirname+File.separator; File dir=new File(dirname); if(dir.exists()) { System.out.println("目錄已存在!"); return; } if(dir.mkdirs()) System.out.println("目錄創建成功!"); else { System.out.println("目錄創建失敗!"); return; } }
public static boolean checkDirExist(String dirname) { File file=new File(dirname); if(file.exists()) { if(file.isDirectory()) return true; } return false; }
public static File[] getDirFiles(String dirname) { File[] result=null; File fileDir = new File(dirname); if (!fileDir.exists()) { System.out.println("文件夾不存在"); return null; } else { if (!fileDir.isDirectory()) { fileDir = new File(fileDir.getParent()); } result = fileDir.listFiles(); } return result; }
public static void deleteFiles(String filename) { File file=new File(filename); if(!file.exists()) { System.out.println("文件不存在!"); return; } if(file.delete()) { System.out.println(filename+"文件刪除成功!"); } }
public static void deleteDirs(String dirname) { if(!dirname.endsWith(File.separator)) dirname=dirname+File.separator; File dirn=new File(dirname); if(!dirn.exists()) { System.out.println("文件目錄不存在!"); return; } File[] files=dirn.listFiles(); for(int i=0;i<files.length;i++) { if(files[i].isFile()) { deleteFiles(files[i].getAbsolutePath()); } else deleteDirs(files[i].getAbsolutePath()); } if(dirn.delete()) { System.out.println("目錄刪除成功!"); } }
public static void searchFiles(String dirname,String filename) { if(!dirname.endsWith(File.separator)) dirname=dirname+File.separator; File dir=new File(dirname); if(!dir.exists()) { System.out.println("該文件夾不存在"); return; } File[] files=dir.listFiles(); for(int i=0;i<files.length;i++) { if(files[i].isFile()) { if(files[i].getName().equals(filename)) System.out.println("文件路徑為:"+files[i].getAbsolutePath()); } else { searchFiles(files[i].getAbsolutePath(),filename); } } }
public static File[] searchFile(File folder,final String keyWord) {
File[] subFolders=folder.listFiles(new FileFilter() { public boolean accept(File pathname) { if(pathname.isFile()) countFiles++; else countFolders++; if(pathname.isDirectory()||(pathname.isFile()&&pathname.getName().contains(keyWord))) return true; return false; }}); List<File> result=new ArrayList<File>(); for(int i=0;i<subFolders.length;i++) { if(subFolders[i].isFile()) result.add(subFolders[i]); else { File[] foldResult=searchFile(subFolders[i],keyWord); for(int j=0;j<foldResult.length;j++) result.add(foldResult[j]); } } File files[]=new File[result.size()]; result.toArray(files); return files; }
public static void copyFileToFile(File tofile,File fromfile) { if(tofile.exists()) { System.out.println("文件已經存在!"); return; } else { try { tofile.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println("復制文件從"+fromfile.getAbsolutePath()+"到"+tofile.getAbsolutePath()); try { InputStream is=new FileInputStream(fromfile); FileOutputStream fos=new FileOutputStream(tofile); byte []buffer=new byte[1024]; try { while(is.read(buffer)!=-1) fos.write(buffer); is.close(); fos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
/**
- @param file 要復制的文件
- @param dirname 文件復制到目標目錄 */ public static void copyFileToDir(File file,String dirname) { createDir(dirname); String filename=dirname+"/"+file.getName(); File nfile=new File(filename); copyFileToFile(nfile,file); }
public static void copyDirToDir(String todir,String fromdir) { File []f=getDirFiles(fromdir); for(int i=0;i<f.length;i++) { if(f[i].isFile()) copyFileToDir(f[i],todir); else copyDirToDir(todir+"/"+f[i].getName(),fromdir+"/"+f[i].getName()); } System.out.println(fromdir+"復制到文件夾"+todir+"復制完成!"); }
/**
- @param args
- @throws IOException */ public static byte[] readFilebyByte(String filename) throws IOException { byte[] result = null; File file = new File(filename); if (file.exists() && file.isFile() && file.length() > 0) { result = new byte[(int) file.length()]; FileInputStream inStream = new FileInputStream(filename); inStream.read(result); inStream.close(); } return result; }
public static void readFilebyLine(String filename) throws IOException { File file=new File(filename); BufferedReader reader=null; System.out.println("以行為單位讀取數據,一次讀取一行:"); try { reader=new BufferedReader(new FileReader(file)); String temp=null; int line=1; while((temp=reader.readLine())!=null) { System.out.println("line"+line+":"+temp); line++; } reader.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
public static void writeFilebyByte(String filename) throws IOException { String content="fsfni ds dw wod"; File file=new File(filename); OutputStream out=null; System.out.println("以字節為單位寫入文件:"+content); out=new FileOutputStream(file); byte []bytes=content.getBytes(); out.write(bytes); out.close(); }
public static void writeFilebyChar(String filename) throws IOException { String content="fsfni ds dw wod"; File file=new File(filename); Writer writer=null; System.out.println("以字符為單位寫入文件:"+content); writer=new OutputStreamWriter(new FileOutputStream(file)); writer.write(content); writer.close(); }
public static void writeFilebyLine(String filename) throws IOException { String content="fsfni ds dw wod"; File file=new File(filename); PrintWriter writer=null; System.out.println("以行為單位寫入文件:"+content); writer=new PrintWriter(new FileOutputStream(file)); writer.println(content); writer.print(2355); writer.flush(); writer.close(); }
public static void addContent1(String filename) throws IOException { FileWriter writer=new FileWriter(filename,true); String content="this is a nice man,so you should get it"; writer.write(content); writer.close(); }
public static void addContent2(String filename) throws IOException { RandomAccessFile rfile=new RandomAccessFile(filename, "rw"); long filelength=rfile.length(); rfile.seek(filelength); String content="hello world"; rfile.write(content.getBytes("gb2312")); rfile.close();
} /**
- @param args
- @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub
String dirname="c:/cc/"; String todir="c:/dd/"; String tdir="c:/ee/"; String fn="c:/cc/c.txt"; String filename="ww.txt"; File folder=new File("c:/cc/"); String keyword="ww"; //readFilebyLine(fn); writeFilebyLine(fn); addContent1(fn); addContent2(fn); //File fromfile=new File("c:/cc/c.txt"); //File tofile=new File("e:/ccc.txt"); //byte[] fb=readFilebyByte(fn); //for(int i=0;i<fb.length;i++) // System.out.println((char)fb[i]); //System.out.println(fb.toString()); //copyFile(tofile,fromfile); //copyFileToDir(fromfile,todir); //copyDirToDir(tdir,dirname); //File[] f=searchFile(folder,keyword); //createDir(dirname); //deleteDirs(dirname); //searchFiles(dirname, filename); //File[] f=getDirFiles(dirname); //for(int i=0;i<f.length;i++) { // System.out.println(f[i].getAbsolutePath()); } }
}</pre>