文件操作
很多实现操作都离不开文件的读取和写入的,所以这一部分必须掌握。
具体操作方法
创建文件对象
File file=new File("path");
创建文件夹
file.mkdirs()
判断文件是否存在
file.exists()
判断是否为文件夹
file.isDirectory()
创建文件
file.createNewFile()
删除文件或文件夹
file.delete()
获取文件夹下的所有文件对象
file.listFiles()
获取文件夹下的所有文件名称
file.list()
读取文件
FileReader fr = new FileReader(str1);
BufferedReader br = new BufferedReader(fr);
String str2;
while (str2 =br.readLine() != null) {}
写入文件
FileWriter fw = new FileWriter(str1);
fw.write(str2);
文件属性
System.out.println(f.getName() + "的属性如下: 文件长度为:" + f.length());
System.out.println(f.isFile() ? "是文件" : "不是文件");
System.out.println(f.isDirectory() ? "是目录" : "不是目录");
System.out.println(f.canRead() ? "可读取" : "不");
System.out.println(f.canWrite() ? "是隐藏文件" : "");
System.out.println("文件夹的最后修改日期为:" + new Date(f.lastModified()));
获取路径
file.getAbsoluteFile() //file为文件
file.getPath() //file为文件夹
文件分割符
File.separator // ‘/’
文件I/O流
低效I/O(使用字符流)
写入操作
FileWriter(String Filename, boolean append) // 参数append 默认为false
void write(String str);
void write(String str, int index, int len);
void write(int ch); // 注意,这是写一个字符, 如:write(97),则写入的为'a',如果想写数字,推荐使用第一个,如write("97")
void write(char[] chs);
void write(char[] chs, int index, int len);
读取操作
FileReader(String filename)
int read() // 一次读取一个字符 以ASCII存储 想要看到字符 做类型转换 (char)read()
// 当返回值为-1时,说明没有数据了
int read(char[] cbuf) // 一次读取一个字符数组,返回的是实际读取到的字符的个数
高效I/O
写入操作:
BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\bw.txt"));
bw.write("高效O Demo");
bw.write("换\r\n行");
bw.flush();
bw.close();
特殊功能:
void newLine() // 写一个换行符,具体是什么由系统决定, win(\r\n) linux(\n) mac(\r)
读取操作
BufferedReader br = new BufferedReader(new FileReader("d:\\bw.txt"));
char[] chs = new char[1024];
int len;
while((len=bw.read(chs))!=-1)
{
System.out..print(new String(chs,0,len));
}
bw.close();
特殊功能:
String readLine() // 一次读取一行数据,但是不读取换行符。
使用字节流进行文件操作
FileInputStream fis = new FileInputStream("这里是一个文件名");
FileOutputStream fos = new FileOutputStream("另一个问件名");
// 一次读一个字节
// int by;
// while((by = fis.read() ) !=-1){
// fos.write(by);
// }
// 一次读取一个字符数组
int len;
byte[] bys = new byte[1024];
while((len = fis.read(bys))!=1){
fos.write(len);
}
fis.close();
fos.close();