java中的文件操作总结(干货)

作者:coder_elijah 时间:2023-11-08 22:24:29 

File类简介


package com.file;

import java.io.File;
import java.io.IOException;

/**
* Created by elijahliu on 2017/2/10.
*/
public class filetest {
 public static void main(String[] args) {
   File file = new File("hello.txt");
   //是否存在
   if (file.exists()) {
     //文件
     System.out.println(file.isFile());
     //路径(文件夹)
     System.out.println(file.isDirectory());

File nameto = new File("new Hello.txt");
     file.renameTo(nameto);//这里就是重命名文件的操作,直接新建一个file对象然后使用renameTo方法可以重命名文件

} else {
     System.out.println("文件不存在");
     try {
       file.createNewFile();
       System.out.println("文件已被创建");
     } catch (IOException e) {
       System.out.println("文件无法创建");
     }
   }
   if (file.exists()) {
     //删除文件
     file.delete();
     System.out.println("删除文件");
   } else {
   }
 }
}

文件夹操作


package com.file;

import java.io.File;

/**
* Created by elijahliu on 2017/2/11.
*/
public class HelloFolder {
 public static void main(String[] args) {
   File folder = new File("my new folder");
   if (folder.mkdir()) {//创建文件夹 判断是否成功
     System.out.println("文件夹创建完成");
     File newfolder = new File("myn new foleder - new");
     folder.renameTo(newfolder);//这里重命名了文件夹 文件夹的重命名是可以单独更改一级的文件夹名的 而这一级下面的文件夹不变 保存目录结构
     if (folder.delete()) {
       System.out.print("done");//这里的删除只能删除空文件夹,如果文件夹中有东西,那么则不能删除,不问三七二十一直接删除一个非空文件夹是非常不负责任的
     } else {
       System.out.println("fail");
     }

}else{
     if (folder.exists()) {
       System.out.println("文件夹已经存在不用创建");
     }else{
       System.out.println("文件夹创建失败");
     }
   }
   File folders = new File("my new folder/one/two/three/main");
   folders.mkdirs();//在java中用mkdir只能创建一个,mkdirs可以创建多级目录

}
}

文件属性设置


package com.file;

import java.io.File;

/**
* Created by elijahliu on 2017/2/11.
*/
public class SetFileProperty {
 public static void main(String[] args){
   File file = new File("test.file");
   if (file.exists()){
     file.setWritable(true);//可写
     file.setReadable(true);//可读
     file.setReadOnly();//只读
   }
 }
}

遍历文件夹


 public void printFiles(File dir,int tab) {//tab为不同目录结构的缩进量
   if (dir.isDirectory()) {
     File next[] = dir.listFiles();//判断如果是目录 则返回目录所有的文件名数组用于遍历文件夹
     for (int i = 0;i<next.length;i++) {//层次缩进输出
       System.out.print("---");
     }
     for(int i = 0;i<next.length;i++) {//这里用了递归获取目录结构
       System.out.println(next[i].getName());
       if (next[i].isFile()) {
         printFiles(next[i],++tab);

}
     }
   }
 }

文件简单读写


package com.file;

import java.io.*;

/**
* Created by elijahliu on 2017/2/11.
*/
public class ReadFile {
 public static void main(String[] args) {
   File file = new File("new Hello.txt");
   if(file.exists()){
     System.err.print("exsit");
     try (FileInputStream fis = new FileInputStream(file)) {//文件输入流 这是字节流

InputStreamReader isr = new InputStreamReader(fis,"UTF-8");//inputstreamReader是一个字节流,将字节流和字符流转化的时候,就需要制定一个编码方式,不然就会乱码
       BufferedReader br = new BufferedReader(isr);//字符缓冲区

String line;
       while((line = br.readLine())!=null){//这里将缓冲区里的内容如果非空就读出来打印
         System.out.println(line);

}
       br.close();//最后将各个线程关闭
       isr.close();
       fis.close();
     } catch (FileNotFoundException e) {
       e.printStackTrace();
     } catch (IOException e) {
       e.printStackTrace();
     }
   }
   File newfile = new File("newtext.txt");
   try {
     FileOutputStream fos = new FileOutputStream(newfile);//这里如果文件不存在会自动创建文件
     OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");//和读取一样这里是转化的是字节和字符流
     BufferedWriter bw = new BufferedWriter(osw);//这里是写入缓冲区

bw.write("厉害了我的哥");//写入字符串

bw.close();//和上面一样 这里后打开的先关闭 先打开的后关闭
     osw.close();
     fos.close();
     System.out.println("done");
   } catch (FileNotFoundException e) {
     e.printStackTrace();
   } catch (UnsupportedEncodingException e) {
     e.printStackTrace();
   } catch (IOException e) {
     e.printStackTrace();
   }

}
}

来源:http://www.jianshu.com/p/5770760f83c1#

标签:java,文件操作
0
投稿

猜你喜欢

  • JAVA实现扫描线算法(超详细)

    2023-06-30 13:33:20
  • Android多功能视频播放器GSYVideoPlayer开发流程

    2021-07-21 07:35:05
  • Android编程实现AlertDialog自定义弹出对话框的方法示例

    2022-09-13 19:34:45
  • 通过LinQ查询字符出现次数的实例方法

    2023-12-10 13:40:01
  • Android7.0中关于ContentProvider组件详解

    2023-10-30 19:48:29
  • MyBatis环境资源配置实现代码详解

    2023-08-05 08:59:02
  • C#关于System.Collections空间详解

    2022-04-12 16:04:06
  • java使用Socket实现SMTP协议发送邮件

    2022-06-08 19:25:50
  • 剑指Offer之Java算法习题精讲求和篇

    2022-04-07 14:05:36
  • 在Spring Boot中实现HTTP缓存的方法

    2023-10-06 14:18:16
  • Spring ApplicationListener监听器用法详解

    2022-08-21 00:00:08
  • android控件实现多张图片渐变切换

    2022-06-18 20:11:57
  • C#实现银行家算法

    2023-05-01 08:04:35
  • Android HorizontalScrollView滑动与ViewPager切换案例详解

    2023-06-05 00:48:27
  • java两个integer数据判断相等用==还是equals

    2021-06-14 00:46:52
  • Java数据结构之线段树的原理与实现

    2021-12-17 13:30:52
  • Spring JPA 增加字段执行异常问题及解决

    2023-06-25 23:55:58
  • SpringBoot自定义MessageConvert详细讲解

    2023-04-23 19:24:39
  • C#使用CallContext缓存线程数据

    2022-03-27 17:45:55
  • android 实现APP中改变头像图片的实例代码

    2021-11-02 20:39:58
  • asp之家 软件编程 m.aspxhome.com