java中文件操作
判断是否为文件file.isFile()方法
判断是否为目录file.isDirectory()方法
判断是否存在file.exist()方法
创建新文件file.createNewFile()
删除文件file.delete()
重命名file.renameTo(new File("Desktop/javatester.txt"));windows环境下需要注意不能直接跨盘操作
写文件为什么最后要用close()方法关闭流?
不调用此方法,可能系统还没有完成所有数据的写操作,程序执行完毕结束,导致流中的最后一些数据没有写入文件,这取决于操作系统的繁忙程度和硬盘IO效率。
而添加close(方法后,close()方法为程序一部分,close()执行前必须数据流写完毕,然后执行close(),最后程序再结束
写少量文本内容时,用FileWriter类还可以,但是大量数据时,最好用BufferedWriter
package com.starain.io;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class FileOperation {
public static void main(String[] args) throws IOException {
File file1 = new File("D:\\hello4.txt");
File file2 = new File("D:\\hello4.txt");
if(file1.exists()){//判断file1文件是否存在
file1.delete();//删除file1文件
}
/*测试file1是否已经删除*/
if(file1.exists()){
System.out.println("file existed");
}else {
System.out.println("had been deleted");
}
/*如果file2不存在则创建file2,然后命名为test5.txt*/
if(!file2.exists()){
//抛出异常
try {
file2.createNewFile();//创建文件
System.out.println("文件已经创建");
} catch (IOException e) {
System.out.println("文件无法创建");
}
if(file2.isFile()){
//重命名
File name = new File("D:\\test5.txt");
file2.renameTo(name);
}
/*写文件*/
//FileWriter形式,不带缓冲,适合内容较少时
String pathName1 = "D:/test5.txt";
FileWriter filewriter1 = new FileWriter(pathName1);//可能抛出异常,所以用throw IOException或者try{}catch{}
filewriter1.write("This is a test program\n");
filewriter1.write("hello world");
filewriter1.close();//因为程序执行较快,但是文件读写较慢,
//不调用close()方法可能造成文件正在写时(未写完),程序执行完,写操作便终止,一些数据未写上去
//BufferedWriter高效的缓冲器流类
String pathName2 = "D:\\test6.txt";//文件不存在时自动创建,存在时覆盖旧文件
BufferedWriter filewriter2 = new BufferedWriter(new FileWriter(pathName2));
/*String pathName2 = "D:/test6.txt";
* FileWriter file1 = new FileWriter(pathName2);
* BufferedWriter filewriter2 = new BufferedWriter(file1);
*/
filewriter2.write("test6");
filewriter2.write("\nhello");//遇到非\n换行的系统导致不能正常换行
filewriter2.newLine();//newLine()方法换行,能解决不同系统间换行方法不同的难题
filewriter2.write("world");
filewriter2.close();//关闭流
}
}
}