今天看了看File相关操作,自己编写了几个常用的方法,整理一下。 1文件建立 2 文件移动 3 文件拷贝 4 文件夹拷贝 5 文件夹遍历文件 - import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.sql.Timestamp;
-
- public class SomeMethodForFile {
-
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- //File file=new File(E:\\test\\test.txt);//window系统下
- //File file=new File(E:/test/test.txt);//Linux系统下
- TestFile testFile=new TestFile();
- //创建新文件
- String path="I:\\test\\1\\testfile.txt";
- //testFile.createFile(path);
- //修改存放路径及名称,内容也一块复制过去了
- String path2="I:/test2/2/testfile2.txt";
- //testFile.refileName(path, path2);
-
- //复制一个文件
- String src=path;
- String toPath="I:\\test3";
- //testFile.copyFile(src, toPath);
-
- //遍历文件夹
- String targetPath="I:\\FGOSI";
- //testFile.searchFile(targetPath);
-
- //拷贝一个文件夹
- testFile.copyDir(targetPath, "I:\\FGOSI-bak");
- }
-
- }
- class TestFile{
- /**新建一个文件
- *
- * @param path
- */
- public void createFile(String path){
- File file=new File(path);
- if(!file.exists())//判断文件是否存在
- {
- try{
- new File(file.getParent()).mkdirs();//建立上层文件夹
- file.createNewFile();//创建文件,执行此语句才产生该文件
- }
- catch(IOException e){
- e.printStackTrace();
- }
- }
- else
- {
- System.out.println("文件已存在");
- }
- //获取文件名
- String filename=file.getName();
- //获取文件路径
- String filePath=file.getPath();
- //获取文件绝对路径
- String fileAbsolutePath=file.getAbsolutePath();
- //获取父亲文件路径
- String parentPath=file.getParent();
- //获取父亲文件名
- String parentName=new File(file.getParent()).getName();
- //获取文件大小
- long size=file.length();
- //获取最后一次修改时间
- long lastTime=file.lastModified();
- String filemsg="文件名:"+filename+"\n路径:"+filePath+"\n绝对路径:"+fileAbsolutePath+"\n父文件路径:"+parentPath;
- filemsg+="\n文件大小"+size+"\n最后修改时间:"+new Timestamp(lastTime);
- System.out.println(filemsg);
- System.out.println("父亲节点文件夹名称"+parentName);
- //file.delete();//删除文件
- }
- /**修改文件路径及名称,内容也一块移动过去了,相当于“移动”
- *
- * @param fromPath
- * @param toPath
- */
- public void refileName(String fromPath,String toPath){
- File file1=new File(fromPath);
- File file2=new File(toPath);
- //判断file2路径是否存在,不存在则创建
- if(!file2.exists()){
- new File(file2.getParent()).mkdirs();
- }
- file1.renameTo(file2);//修改文件名称及路径
- System.out.println(fromPath+"文件已移动及重命名到"+toPath);
- }
- /**复制一个文件
- *
- * @param src
- * @param to
- */
- public void copyFile(String src, String des) {
- File file1 = new File(src);
- File fileDir=new File(des);//产生文件的上层文件夹对象
- String topath = des + "\\" + file1.getName();
- File file2 = new File(topath);//产生文件对象
-
- if(!fileDir.exists()){
- fileDir.mkdirs();//创建文件夹
- }
- if(file2.exists())
- {
- file2.delete();//目标位置有该文件,则删除
- }
- try{
- InputStream inStream = new FileInputStream(src); // 读入原文件
- FileOutputStream fs = new FileOutputStream(topath);
- byte[] buffer = new byte[4098];
- int length;
- int byteread=0;
- int bytesum=0;
- while ((byteread = inStream.read(buffer)) != -1) {
- bytesum += byteread; // 字节数 文件大小
- //System.out.println(bytesum);
- fs.write(buffer, 0, byteread);
- }
- inStream.close();
- fs.close();
- System.out.println("文件复制成功,新路径为"+topath);
- }
- catch(IOException e){
- e.printStackTrace();
- }
- }
- /**
- * 遍历一个文件夹下的文件,并显示文件名称
- * @param path
- */
- public void searchFile(String path){
- File file=new File(path);
- File[] files=file.listFiles();//file下的文件或文件夹
- System.out.println(path+"目录下的文件数有"+files.length);
- for(File f:files){
- if(f.isFile()){
- System.out.println(f.getName());
- }
- else if(f.isDirectory()){
- searchFile(f.getPath());//嵌套
- }
- }
- }
- /**
- * 复制一个文件夹,从src拷贝到des,src里面可能是文件夹或文件。
- * @param src
- * @param des
- */
- public void copyDir(String src,String des){
- File file1=new File(src);
- File file2=new File(des);
- if(!file2.exists()){
- file2.mkdirs();
- }
- File[] files=file1.listFiles();
- for(File f:files){
- if(f.isFile()){
- copyFile(f.getPath(),des+"\\"+new File(f.getParent()).getName());//注意,目标路径要加上这一层文件夹的名称,作为下次调用的新目标路径
- }
- else if(f.isDirectory()){
- copyDir(f.getPath(),des+"\\"+new File(f.getParent()).getName());//嵌套
- }
- }
- }
-
- }
复制代码
|