java file 的基本操作

package test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
/**

  • 文件的相关操作 包括
  • 文件目录创建 文件创建 文件写入 文件读取 文件重命名 等
    */
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.OutputStreamWriter;

public class FileOperate {
//5.删除目录
public static void delDir(String path){
File dir=new File(path);
if(dir.exists()){
//list()方法是返回某个目录下的所有文件和目录的文件名,返回的是String数组
//listFies()方法是返回某个目录下所有文件和目录的绝对路径,返回的是File数组
File[] tmp=dir.listFiles();
for(int i=0;i<tmp.length;i++){
if(tmp[i].isDirectory()){
delDir(path+"/"+tmp[i].getName());
}
else{
tmp[i].delete();
}
}
dir.delete();
}
}

//6.删除文件
public static void delFile(String path,String filename){
    File file=new File(path+"/"+filename);
    if(file.exists()&&file.isFile())
        file.delete();
}

//7.文件重命名
public static void renameFile(String path,String oldname,String newname){
    if(!oldname.equals(newname)){//新的文件名和以前文件名不同时,才有必要进行重命名
        File oldfile=new File(path+"\\"+oldname+".txt");
        File newfile=new File(path+"\\"+newname+".txt");
        if(newfile.exists())//若在该目录下已经有一个文件和新文件名相同,则不允许重命名
            System.out.println(newname+"已经存在!");
        else{
            oldfile.renameTo(newfile);
        }
    }         
}


public static void main(String[] args) throws IOException {

//1 .目录的创建
//定义文件路径
String basepath=“D:\FileOperate”;

	File dir=new File(basepath);
	
	//判断 如果目录(path)不存在的话,创建目录 (path)dir.mkdir()
	if(!dir.exists()){
		dir.mkdir();
		System.out.println("创建文件夹成功!");	
}

//2.文件的创建

	//定义文件名
	String fileName = "firstFile";
	
	//path 为妳创建的文本文件的路径 
	String path=basepath+"\\"+fileName+".txt";
	
	//创建文件存放的目录
	File file=new File (path);
	
	//如果文件不存在则创建文件
	if(!file.exists()){
		try {
			file.createNewFile();
		} catch (IOException e) {
			System.out.println(e.getMessage());  
		}
		System.out.println("success create file,the file is"+path);
	}	

//3.文件写入

	//3.1  FileWriter
	String Data =" This content will append to the end of the file";
	
	try {
		//new FileWriter(file,true);这种方式会 保留现有的内容和附加在该文件的末尾的新内容,不会覆盖
		FileWriter fileWriter=new FileWriter(path,true);
		
	//\r\n实现换行
		fileWriter.write(Data+"\r\n今天去哪玩啊?\r\n");
		
		//刷新
		fileWriter.flush();
		
		//关闭资源
		fileWriter.close();
		
		System.out.println("Done");
	} catch (IOException e) {
		e.printStackTrace();
	}
	
	//3.2.1 BufferedWriter写入文件
	String Content="if you don't care,i will kill you";
	try {
		//创建一个字符缓冲流对象
		//BufferedWriter bw=new BufferedWriter(new FileWriter(path)); 这种会覆盖前面的内容
		//这种方式可以在文件内容后面追加内容不会覆盖
		
		BufferedWriter BW=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path,true)));
		//System.out.println(new FileWriter(path));
		//写入数据
		//bw.write(Content);
		
		BW.write(Content);
		//BufferedWriter中的换行实现,换行符也能实现
		BW.newLine();
		BW.write("天气\r\n");
		BW.write("晴朗");
		
		//输入数据完成后刷新
		BW.flush();
		
		//关闭资源
		//br.close();
		BW.close();
		System.out.println("OK!");
	//3.2.2 (在IO操作,利用BufferedReader和BufferedWriter效率会更高一点)
		BufferedReader br=new BufferedReader(new FileReader(file));
		String temp=null;
		StringBuffer sb=new StringBuffer();
		temp=br.readLine();
		while(temp!=null){
			sb.append(temp+" ");
			temp=br.readLine();
		}
		String output=sb.toString();
		System.out.println(output);
	} catch (IOException e) {
		e.printStackTrace();
	}
	
	//3.3
	//3.3.1FileOutputStream写入文件
	
	FileOutputStream fop=null;
	
	String content="这是用文件输出流写入文件";
	try {
		
		//创建FileOutputStream.txt文件
		file=new File(basepath+"\\"+"FileOutputStream.txt");
		
		//创建FileInputStream类对象 FileOutputStream(file,true)加入参数true则后面添加的数据不会覆盖前面的数据
		//FileOutputStream(file); 这种会覆盖原先数据
		fop=new FileOutputStream(file,true);
		
		//若文件不存在,创建文件
		if (!file.exists()) {
		    file.createNewFile();
		   }
		
		//将content数据转化为二进制数据,创建byte型数组
		byte[] contentInBytes=content.getBytes();
		
		//将数组的信息写到文件中
		fop.write(contentInBytes);
		
		//实现换行
		fop.write("\r\n".getBytes());
		
		//刷新
		fop.flush();
		
		//关闭流
		fop.close();
		System.out.println("FileOutputStream Done!");
		
		//3.3.2读取文件信息
		//创建FileInputStream类对象
		FileInputStream inputStream=new FileInputStream(file);
		
		//创建byte数组
		byte[] readcontent=new byte[1024];
		
		//从文件中读取信息
		int i=inputStream.read(readcontent);
		
		//输出文件中的信息
		System.out.println(new String(readcontent,0,i));
		
		//关闭流
		inputStream.close();
		
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	}finally{
		try{
			if(fop!=null){
				fop.close();
			}
		}catch(IOException e){
			e.printStackTrace();
		}
	}

//4.目录删除
//要利用File类的delete()方法删除目录时,必须保证该目录下没有文件或者子目录
//,否则删除失败,因此在实际应用中,我们要删除目录
//,必须利用递归删除该目录下的所有子目录和文件,然后再删除该目录。
//delDir(basepath); 删除basepath目录
//delDir(basepath);

//文件删除
//delFile(basepath,“firstFile.txt”);

//文件重命名
//renameFile(basepath, “firstfile”, “file”);

}

}

猜你喜欢

转载自blog.csdn.net/qq_39516150/article/details/89376324
今日推荐