黑马程序员技术交流社区
标题:
【总结】Java File类简单操作
[打印本页]
作者:
daoqin
时间:
2014-9-14 18:23
标题:
【总结】Java File类简单操作
今天看了看
F
ile
相关操作,自己编写了几个常用的方法,整理一下。
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());//嵌套
}
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2