Java基础视频笔记第五,本地文件操作:
1、File类简介:
File file = new File("D:\\File.txt");//读取本地的file文件
创建文件:file.createNewFile();
* 如果不指定路径,默认会创建到工程目录下
Eclipse的目录是延时显示的,不会实时刷新,按F5刷新
* 填写相对路径时,格式为: bin/hello.txt
当前目录的上一级目录填写: ../hello.txt
上两级文件夹目录: ../../hello.txt
删除文件:file.dekete();
重命名:修改路径即可,但要保持在同一目录下
- import java.io.File;
- import java.io.IOException;
- public class FileDemo01 {
- public static void main(String[] args) {
- File file = new File("D:\\File_II.txt");
- if (file.exists()) {
- /* //文件
- System.out.println(file.isFile());
- //路径
- System.out.println(file.isDirectory());
- */
- //file.delete();
- //System.out.println("文件删除成功");
- //重命名
- File file2 = new File("D:\\File_Yo.txt");
- file.renameTo(file2);
- //跨目录移动,修改路径即可,但一定要在同一分区下
- // File file2 = new File("D:\\bin\\File_Yo.txt");
- }else {
- System.out.println("文件不存在,开始创建...");
- try {
- file.createNewFile();
- System.out.println("\r文件成功创建!");
- } catch (IOException e) {
- System.out.println("\r无法创建...");
- }
- }
- }
- }
2、文件夹的创建、删除、重命名
// 创建文件夹
File folder = new File("Folder_new");
folder.mkdir();
反斜杠 \ 号需要用"\\" 表示;
// 创建多级文件夹,用 mkdirs()
File folder = new File("Folder_new\Jack\Michael\system");
folder.mkdirs();
//重命名
File folder = new File("Folder_new\Jack");
File newFolder = new File("Folder_new\Jack_new")
folder.renamoTo(newFolder);
//删除
folder.delete(); // 只能删除空文件夹
- import java.io.File;
- import java.io.IOException;
- import java.util.TreeSet;
- public class FileDemo02 {
- public static void main(String[] args) {
- File folder = new File("D:\\FileDemo");
- if (folder.mkdirs()) { // 创建文件夹
- System.out.println("目录创建成功!");
- }else {
- if(folder.exists()){ // 检测文件夹是否存在
- System.out.println("目录已存在");
- }else {
- System.out.println("创建失败!");
- }
- }
- // 动态获取 分区名 文件夹名 ,再加上 文件名
- File file = new File(folder.getParent()+"\\"+folder.getName()+"\\"+"File_test.txt");
- try {
- file.createNewFile();
- } catch (IOException e) {
- e.printStackTrace();
- }
- System.out.println(folder.getParent()+"\\"+folder.getName()+"\\\\");
- // 创建多级文件夹
- File fd = new File("D:/FileDemo/Jack/Michael/s2");//重命名后,这里要更改后才可以继续
- //fd.mkdirs(); // 多级文件夹目录,重命名的时候此行请注释掉
- // 根据需求重命名
- File fdrename = new File("D:/FileDemo/Jack/Michael/5");
- if(fd.renameTo(fdrename)){ // 给创建的文件夹以覆盖方式,重命名
- System.out.println("Done");
- }else {
- System.out.println("Fail");
- }
- }
- }
3、文件属性的读取:
判断文件是否存在 file.exists();
读取文件名称: file.getName();
读取文件路径: file.getPath();
读取文件绝对路径:file.getAbsolutePath();
读取文件父级路径:file.getParent();
读取文件大小: file.length();
判断文件是否被隐藏:file.isHidden();
判断文件是否可读:file.canRead();
判断文件是否可写:file.canWrite();
判断文件是否为文件夹:file.isDirectory();
4、文件属性的设置
将文件设定为可写:file.setWritable();
将文件设定为可读: file.setReadable();
将文件设定为只读: file.setReadOnly();
- import java.io.File;
- public class FileDemo4_ScanFile {
- public static void scanFile(File dir,int tab){
- // 判断 传入的参数 是否是路径
- if (dir.isDirectory()) {
- // 如果是路径 就输出 文件和子文件的结构
- File next[] = dir.listFiles();
- for (int i = 0; i < next.length; i++) {
- // 判断 如果是文件 输出文件名,如果是文件夹输出路径
- System.out.println(next[i].getName());
- // 获取tab值,让缩进显示更清晰
- for (int j = 0; j < tab; j++) {
- System.out.print("|--");
- }
- // 判断是否为路径
- if (next[i].isDirectory()) {
- // 如果是文件,输出下一级文件结构
- scanFile(next[i],tab+1);
- }
- }
- }
- }
- public static void main(String[] args) {
- scanFile(new File("F:/SoftWare/China Mobile"),1);
- }
- }
5、遍历文件夹: FileDemo4_ScanFile.java
File next[] = file.listFiles();
6、文件的简单读写:
File file = new File("text.txt");
2 if(file.exits()){
3 System.out.println("exist");
4 // 添加 try catch 语句
5 // 输出流
6 FileInputStrean fis = new FileInputStream(file);
7 InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
8 // 带缓冲的Reader
9 BufferedReader br = new BufferedReader(isr);
10 //String 存放读取数据
11 String line;
12 while(line = br.readLine() != null){
13 system.out.println(line);
14 }
// 关闭流
br.close();
isr.close();
fis.close();
}
// 文件写入
FileOutputStream fos = new FileOutputStream();
OutputStreamWriter osw = new OutputStreamWriter();
BufferedWriter bw = new BufferWriter();
bw.write("覆盖内容");
bw.close();
osw.close();
fos.close();
详细代码:
- public class ReadWriteTestFile {
- public static void readFile(){
- File file = new File("D:/FileDemo/Jack/Michael/test.txt");
- if(file.exists()){
- System.out.println("文件存在,准备读取。。。");
- try {
- //三大读取流
- // 首先创建 文件输入流
- FileInputStream fis = new FileInputStream(file);
- // 创建文件输入流的Reader
- InputStreamReader isr = new InputStreamReader(fis);
- // 创建带缓冲输入流
- BufferedReader br = new BufferedReader(isr);
- //把读取的流存入String
- String line;
- // 读取一行,如果不为空,说明文件没结束,就把文件输出
- while((line = br.readLine()) != null){
- System.out.println(line);
- }
- // while之外,读取一行为空,此时把文件流关闭
- // 先打开的流后关闭,后打开的先关闭
- br.close();
- isr.close();
- fis.close();
- System.out.println("\r文件读取完毕!");
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- // 文 件 覆 盖 方法
- public static void replaceFile(){
- try {
- File newFile = new File("D:/FileDemo/Jack/Michael/test.txt");
- FileOutputStream fos = new FileOutputStream(newFile);
- OutputStreamWriter osw = new OutputStreamWriter(fos);
- BufferedWriter bw = new BufferedWriter(osw);
- // 给空文件覆盖内容,原始内容将消失
- bw.write("yo!!这是新加入的一行!!!"); // 文件被此内容覆盖
- System.out.println("覆盖完毕...");
- bw.close();
- osw.close();
- fos.close();
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public static void main(String[] args) {
- //readFile();
- replaceFile();
- }
- }