行业知识
【JavaEE 初阶(五)】文件操作和IO
2026-10-25 21:44:17
来源:互联网转载
❣博主主页: 33的博客❣
▶️文章专栏分类:JavaEE◀️
我的代码仓库: 33的代码仓库
关注我带你了解更多文件操作
目录
- 1.前言
- 2.认识文件
- 3.文件操作
- 3.1File 属性
- 3.2构造方法
- 3.3File类方法
- 4.文件内容操作
- 4.1Reader
- 4.2writer
- 4.3inputStream
- 4.4OutputStream
- 4.5字符流与字节流转换
- 5.应用
- 6.总结
1.前言
2.认识文件
操作系统中,会把硬盘设备和软件资源抽象为文件,但大多数情况下谈到文件就是指硬盘中的文件。
文件是以树型结构组织的:以此电脑为根节点的n叉树
文件路径:
如何在文件系统中描述一个文件的位置,因为从树型结构的角度来看,树中的每个结点都可以被一条从根开始,一直到达的结点的路径所描述,而这种描述方式就被称为文件的绝对路径(absolute path)。
除了使用绝路径来描述以外,还可以用相对路径来表示一个文件的位置
. 表示当前目录
. . 表示当前目录的上一级目录
文件类型:
二进制文件:文件是以二进制形式存储数据,不要求保存的内容是合法的字符
文本文件:文件是以纯文本形式存储数据,保存的内容都是合法的字符
判断一个文件是哪种类型,最简单的方式就是以文本的方式打开一个文件,观察是否出现乱码,如果乱码就是二进制文件否则为文本文件。
例如我打开一个图片:
3.文件操作
我们主要涉及文件的元信息、路径的操作,暂时不涉及关于文件中内容的读写操作。
Java 中通过 java.io.File 类来对一个文件(包括目录)进行抽象的描述。注意,有 File 对象,并不代表真实存在该文件。
3.1File 属性
路径中用来分割的符号,在Windows中’/‘或者’’
3.2构造方法
3.3File类方法
public static void main(String[] args) { File file=new File("d:/test"); System.out.println(file.getName());//获取父目录纯文件名称 System.out.println(file.getParent());//获取父目录路径 System.out.println(file.getPath());//获取file的路径 System.out.println(file.getAbsolutePath());//获取file的绝对路径 }public static void main(String[] args) throws IOException { File file=new File("d:/test/test.txt"); System.out.println(file.exists());//判断file是否存在 System.out.println(file.isDirectory());//判断file是否为目录 System.out.println(file.isFile());//判断file是否为文件 System.out.println("创建是否成功: "+file.createNewFile());//创建file对象 System.out.println("删除是否成功: "+file.delete());//删除file }public static void main(String[] args) { File file=new File("d:/test"); String[] files=file.list(); for (int i=0;i System.out.println(files[i]); } } File file=new File("d:/test/DDD/ddd"); //file.mkdir();//创建一个目录 file.mkdirs();//可以创建中间目录 } //打开一个文件 Reader reader=new FileReader("d:/test/test.txt"); while (true){ //一次read读取一个字符,返回当前字符的编码 //int n=reader.read(); //一次读取多个字符,返回读取的字符数 char[] cbuf=new char[3]; int n=reader.read(cbuf); //n=-1表示读取完毕 if(n==-1){ break; } System.out.println(n); System.out.print(Arrays.toString(cbuf)); System.out.println(); } //一个文件写完需要加close要记得,关闭资源 reader.close(); } //打开一个文件 Reader reader=new FileReader("d:/test/test.txt"); try { while (true){ //一次read读取一个字符,返回当前字符的编码 //int n=reader.read(); //一次读取多个字符,返回读取的字符数 char[] cbuf=new char[3]; int n=reader.read(cbuf); if(n==-1){ break; } System.out.println(n); System.out.print(Arrays.toString(cbuf)); System.out.println(); } }finally { //一个文件写完需要加close要记得 reader.close(); } } //打开一个文件 try (Reader reader=new FileReader("d:/test/test.txt")) { while (true) { //一次read读取一个字符,返回当前字符的编码 //int n=reader.read(); //一次读取多个字符,返回读取的字符数 char[] cbuf = new char[3]; int n = reader.read(cbuf); if (n == -1) { break; } System.out.println(n); System.out.print(Arrays.toString(cbuf)); System.out.println(); } } } try (Writer writer=new FileWriter("d:/test/test.txt",true)){ //直接写会覆盖之前的内容,但加上append就不会覆盖 writer.write("我在学习IO"); } } try (InputStream inputStream=new FileInputStream("d:/test/AAA/test.txt")){ while (true){ byte[] bytes=new byte[1024]; int n=inputStream.read(bytes); for (int i=0;i System.out.println(bytes[i]); } if(n==-1)break; }//字节流转换为字符流 Scanner scanner=new Scanner(inputStream); String s=scanner.next(); System.out.println(s); } catch (IOException e) { e.printStackTrace(); } } try (OutputStream outputStream = new FileOutputStream("d:/test/AAA/test.txt",true)) { String s="你好世界"; outputStream.write(s.getBytes()); outputStream.write(97); } catch (IOException e) { e.printStackTrace(); } } try (InputStream inputStream=new FileInputStream("d:/test/AAA/test.txt")) { Scanner scanner=new Scanner(inputStream); String s=scanner.nextLine(); System.out.println(s); } catch (IOException e) { e.printStackTrace(); } } try(OutputStream outputStream=new FileOutputStream("d:/test/AAA/test.txt")) { PrintWriter writer=new PrintWriter(outputStream);//先写入缓冲区 writer.write("hello word"); writer.flush();//记得要冲刷一下 } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入路径"); String path=scanner.nextLine(); File file=new File(path); if (!file.isDirectory()){ System.out.println("输入有误"); return; } System.out.println("请输入文件名"); String words=scanner.nextLine(); find(file,words); } private static void find(File file,String words) { File[] files= file.listFiles(); if (files==null){ return; } for (File f:files){ System.out.println("当前正在扫描"+f.getAbsolutePath()); if(f.isFile()){ check(f,words); }else { find(f,words); } } } private static void check(File file, String words) { if (file.getName().contains(words)){ System.out.println("确认是否要删除文件(y/n)"+file.getAbsolutePath()); Scanner scanner=new Scanner(System.in); String x=scanner.nextLine(); if (x.equals("y")){ file.delete(); System.out.println("删除成功"); }else { return; } }else { return; } }}
上一篇:服务器散热器家用怎么样?