最新Java中IO字符流、File类,牛皮轰轰

最后

一次偶然,从朋友那里得到一份“java高分面试指南”,里面涵盖了25个分类的面试题以及详细的解析:JavaOOP、Java集合/泛型、Java中的IO与NIO、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、Memcached、MongoDB、Spring、Spring Boot、Spring Cloud、RabbitMQ、Dubbo 、MyBatis 、ZooKeeper 、数据结构、算法、Elasticsearch 、Kafka 、微服务、Linux。

这不,马上就要到招聘季了,很多朋友又开始准备“金三银四”的春招啦,那我想这份“java高分面试指南”应该起到不小的作用,所以今天想给大家分享一下。

image

请注意:关于这份“java高分面试指南”,每一个方向专题(25个)的题目这里几乎都会列举,在不看答案的情况下,大家可以自行测试一下水平 且由于篇幅原因,这边无法展示所有完整的答案解析

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

import java.io.IOException;

public class Main {

public static void main(String[] args) throws IOException {

FileWriter fw1 = new FileWriter(“test1.txt”); //创建FileWrite对象(覆盖写入)

//重载一:写字符串的整体

fw1.write(“Hello,my love!”); //调用writer方法写数据

fw1.write(“\r\n”); //Windows系统中的换行方式

fw1.write(“LongRu\r\n”);

//重载二:写字符串的部分

String str = “Hello,my love,Longru!”;

fw1.write(str,14,7);

fw1.write(“\r\n”);

//重载三:写字符数组的整体

char[] array1 = {‘H’,‘e’,‘l’,‘l’,‘o’};

fw1.write(array1);

fw1.write(“\r\n”);

//重载四:写字符数组的部分

char[] array2 = {‘M’,‘y’,’ ',‘l’,‘o’,‘v’,‘e’};

fw1.write(array2,3,4);

fw1.write(“\r\n”);

//重载五:写单个字符

fw1.write(65);

fw1.write(48);

fw1.write(“\r\n”);

fw1.close(); //调用close方法关闭流

FileWriter fw2 = new FileWriter(“test2.txt”,true); //创建FileWrite对象(追加写入)

fw2.write(“Hello,my love!”); //调用writer方法写数据

fw2.write(“LongRu”);

fw2.close(); //调用close方法关闭流

System.out.println(“==================================================”);

//重载一:读取单个字符

FileReader fr1 = new FileReader(“test1.txt”);

int ch;

while ((ch = fr1.read()) != -1)

{

System.out.println((char) ch);

}

//重载二:读取指定长度字符

FileReader fr2 = new FileReader(“test2.txt”);

char[] buf = new char[2];

int len; //代表有效个数

while ((len = fr2.read(buf)) != -1)

{

String str3 = new String(buf,0,len);

System.out.println(str3);

}

fr2.close();

}

}

  • BufferedWriter   &   BufferedReader

package BufferFile;

import java.io.*;

public class Main {

public static void main(String[] ages) throws IOException {

FileWriter fw = new FileWriter(“test3.txt”); //创建BufferedWriter

BufferedWriter bw = new BufferedWriter(fw);

bw.write(“hello”); //写入

bw.newLine(); //BufferedWriter特有的自动根据操作系统换行功能

bw.write(“My love!”);

bw.close(); //关闭

//读单个字符,其实是从8192的缓冲区读取单个字符

FileReader fr = new FileReader(“test3.txt”); // 创建BufferedReader

BufferedReader br = new BufferedReader(fr);

int ch;

while ((ch = br.read()) != -1)

{

System.out.println((char)ch);

}

br.close();

//BufferedReader提供了一个读取一行字符串的方法

FileReader fr2 = new FileReader(“test1.txt”); // 创建BufferedReader

BufferedReader br2 = new BufferedReader(fr2);

String line; //代表一行字符串

while ((line = br2.readLine()) != null)

{

System.out.println(line);

}

}

}

二、File 类

========

1、File类的概述和作用

  • File类是文件和目录路径名的抽象表示形式

  • Java中把文件或者目录(文件夹)都封装成File对象

  • 在硬盘上操作文件,直接使用 File 类

2、File类静态的成员变量

  • pathSeparator:与系统有关的路径分隔符,为了方便,它被表示为一个字符串

  • separator:与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串

public static void main(String[] args) {

//File类静态成员变量

//与系统有关的路径分隔符

String separator = File.pathSeparator;

System.out.println(separator);// 是一个分号,目录的分割(window中环境变量配置各个路径用分号分割,表示一个完整的路径结束) Linux中是冒号 :

//与系统有关的默认名称分隔符

separator = File.separator;

System.out.println(separator);// 向右 \ 目录名称分割 Linux /

}

3、File 类的构造方法

  • File(String pathname):将路径封装File类型对象

  • File(String parent,String child):根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 对象

  • File(File parent,String child):将parent封装成file对象

public static void main(String[] args){

//将路径封装File类型对象

String pathName = “F:\TestPath”;

File f1 = new File(pathName);//将Test22文件封装成File对象。注意;有可以封装不存在文件或者文件夹,变成对象。

System.out.println(f1);

//根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 对象

File f2 = new File(“F:\TestPath”,“a.txt”);

System.out.println(f2);

//将parent封装成file对象。

File dir = new File(“F:\TestPath”);

File f3 = new File(dir,“a.txt”);

System.out.println(f3);

}

4、File 类创建、删除文件(文件、文件夹)

  • public boolean createNewFile():创建文件 如果存在这样的文件,就不创建了

  • public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了

  • public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来

  • public boolean delete():删除文件或者文件夹

public static void main(String[] args) throws IOException {

//创建文件

File F1 = new File(“F:\TestPath\a.txt”);

boolean B1 = F1.createNewFile();

System.out.println(B1);

//创建文件夹

File F2 = new File(“F:\TestPath\a”);

boolean B2 = F2.mkdir();

System.out.println(B2);

//删除文件

File F3 = new File(“F:\TestPath\a.txt”);

boolean B3 = F3.delete();

System.out.println(B3);

}

5、File 类获取功能

  • String getName():返回路径中表示的文件或者文件夹名(获取路径中的最后部分的名字)

  • long length(): 返回路径中表示的文件的字节数

  • String getAbsolutePath():获取绝对路径,返回String对象

  • File   getAbsoluteFile() :获取绝对路径,返回File对象

  • String getParent():获取父路径,返回String对象

  • File getParentFile():获取父路径,返回File对象

public static void main(String[] args) throws IOException {

File F1 = new File(“F:\TestPath\a.txt”);

F1.createNewFile();

String S1 = F1.getName(); //返回路径中表示的文件或者文件夹名,即获取路径中最后部分的名字

long L1 = F1.length(); //返回路径中表示的文件的字节数

File absolute = F1.getAbsoluteFile(); //获取绝对路径,返回File对象

File parent = F1.getParentFile(); //获取父路径,返回File对象

System.out.println(S1);

System.out.println(L1);

System.out.println(absolute);

System.out.println(parent);

}

6、File 类判断功能

  • boolean exists():判断File构造方法中封装路径是否存在

  • boolean isDirectory():判断File构造方法中封装的路径是不是文件夹

  • boolean isFile():判断File构造方法中封装的路径是不是文件

7、File 类 list 获取功能

  • String[] list():获取到File构造方法中封装的路径中的文件和文件夹名 (遍历一个目录)

  • File[] listFiles():获取到,File构造方法中封装的路径中的文件和文件夹名 (遍历一个目录)

  • static File[] listRoots(): 列出可用的文件系统根

public static void main(String[] args)

{

File dir = new File(“F:\TestPath”);

//获取的是目录下的当前的文件以及文件夹的名称。

String[] names = dir.list();

for(String name : names){

System.out.println(name);

}

System.out.println(“========================”);

//获取目录下当前文件以及文件对象,只要拿到了文件对象,那么就可以获取其中想要的信息

File[] files = dir.listFiles();

for(File file : files){

System.out.println(file);

}

}

注意:

  • 指定的目录必须存在

  • 指定的必须是目录,否则容易返回数组null,出现NullPointerException

8、文件过滤器

使用文件过滤器可以删选出某些关键字的文件或文件夹,即过滤一个目录下的指定扩展名的文件,或者包含某些关键字的文件夹

常用方法:

  • public String[] list(FilenameFilter filter):

  • public File[] listFiles(FileFilter filter):

自定义过滤器类

//自定义过滤器实现FileFilter接口,重写抽象方法

public class myFilter implements FileFilter {

@Override

public boolean accept(File pathname) {

return pathname.getName().endsWith(“.txt”);

}

}

在main中调用

public static void main(String[] args)

{

File F = new File(“F:\TestPath”);

File[] filearr = F.listFiles(new myFilter());

for(File f : filearr)

{

System.out.println(f);

}

}

分析:

  • listFiles()遍历目录的同时,获取到了文件名全路径,调用过滤器的方法accept,将获取到的路径传递给accept方法的参数pathname

  • accept方法接收了参数pathname,参数是listFiles传递来的

  • 在accept方法中,进行判断,如果这个路径是txt文件,返回true,走着返回false

  • 一旦方法返回了true,listFiles将路径保存到File数组中

最后如何让自己一步步成为技术专家

说句实话,如果一个打工人不想提升自己,那便没有工作的意义,毕竟大家也没有到养老的年龄。

当你的技术在一步步贴近阿里p7水平的时候,毫无疑问你的薪资肯定会涨,同时你能学到更多更深的技术,交结到更厉害的大牛。

推荐一份Java架构之路必备的学习笔记,内容相当全面!!!

成年人的世界没有容易二字,前段时间刷抖音看到一个程序员连着加班两星期到半夜2点的视频。在这个行业若想要拿高薪除了提高硬实力别无他法。

你知道吗?现在有的应届生实习薪资都已经赶超开发5年的程序员了,实习薪资26K,30K,你没有紧迫感吗?做了这么多年还不如一个应届生,真的非常尴尬!

进了这个行业就不要把没时间学习当借口,这个行业就是要不断学习,不然就只能被裁员。所以,抓紧时间投资自己,多学点技术,眼前困难,往后轻松!

【关注】+【转发】+【点赞】支持我!创作不易!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

会涨,同时你能学到更多更深的技术,交结到更厉害的大牛。

推荐一份Java架构之路必备的学习笔记,内容相当全面!!!

[外链图片转存中…(img-xv6hSrYJ-1715632110844)]

成年人的世界没有容易二字,前段时间刷抖音看到一个程序员连着加班两星期到半夜2点的视频。在这个行业若想要拿高薪除了提高硬实力别无他法。

你知道吗?现在有的应届生实习薪资都已经赶超开发5年的程序员了,实习薪资26K,30K,你没有紧迫感吗?做了这么多年还不如一个应届生,真的非常尴尬!

进了这个行业就不要把没时间学习当借口,这个行业就是要不断学习,不然就只能被裁员。所以,抓紧时间投资自己,多学点技术,眼前困难,往后轻松!

【关注】+【转发】+【点赞】支持我!创作不易!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 30
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值