Java面试知识点:File、IO流

问题:Java面试知识点:File、IO流

答案:

1.File


listFiles方法注意事项:
• 当调用者不存在时,返回null
• 当调用者是一个文件时,返回null
• 当调用者是一个空文件夹时,返回一体度为0的数组
• 当调用者是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回
• 当调用者是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏内容
• 当调用者是一个需要权限才能进入的文件夹时,返回null

代码如下:

package com.xy;import java.io.File;/*** @ProjectName: day01* @Package: com.xy* @ClassName: test01* @Author: 杨路恒* @Description:* @Date: 2021/8/23 0023 16:02* @Version: 1.0*/
public class test01 {public static void main(String[] args) {String path="D:\\Java\\2021Java传智播客\\09_第九章 IO流-V10.0\\01_File";File file=new File(path);System.out.println(file);String path1="D:\\Java\\2021Java传智播客\\09_第九章 IO流-V10.0";String path2="01_File";File file1=new File(path1,path2);System.out.println(file1);File file2=new File("D:\\Java\\2021Java传智播客\\09_第九章 IO流-V10.0");File file3=new File(file2,path2);System.out.println(file3);}
}public class test02 {public static void main(String[] args) throws IOException {File file=new File("day07\\a.txt");boolean newFile = file.createNewFile();System.out.println(newFile);File file1=new File("day07\\aaa");boolean mkdir = file1.mkdir();      //创建一个单级文件夹,// 不管调用者有没有后缀名,只能创建单击文件夹System.out.println(mkdir);boolean mkdirs = file1.mkdirs();    //创建一个多级文件夹System.out.println(mkdirs);}
}public class test03 {public static void main(String[] args) {File file=new File("D:\\Java\\2021Java传智播客\\09_第九章 IO流-V10.0" +"\\01_File\\a.txt");boolean delete = file.delete();System.out.println(delete);     //如果删除的是文件,那么直接删除,如果删除的是文件夹,// 那么能删除空文件夹,如果要删除一个有内容的文件夹,只能先进入到这个文件夹,// 把里面的内容全部删除完毕,才能再次删除这个文件夹//简单来说:只能删除文件和空文件夹}
}public class test04 {public static void main(String[] args) {File file=new File("D:\\Java\\2021Java传智播客\\09_第九章 IO流-V10.0" +"\\01_File\\06-File的获取和判断方法.flv");boolean b = file.isDirectory();     //判断是否为文件夹System.out.println(b);boolean b1 = file.isFile();         //判断是否为文件System.out.println(b1);boolean b2 = file.exists();         //判断文件是否存在System.out.println(b2);String name = file.getName();       //获取文件或目录的名称System.out.println(name);File file1=new File("D:\\");File[] files = file1.listFiles();for (File file2 : files) {System.out.println(file2);}//进入文件夹,获取这个文件夹里面所有的文件和文件夹的File对象,并把这些File对象都放在一个数组// 中返回,包括隐藏文件和隐藏文件夹都可以获取//注意事项://1.当调用者是一个文件时//2.当调用者是一个空文件夹时//3.当调用者是一个有内容的文件夹时//4.当调用者是一个有权限才能进入的文件夹时}
}public class test05 {public static void main(String[] args) throws IOException {File file=new File("day07\\aaa");file.mkdirs();File file1=new File(file,"a.txt");boolean newFile = file1.createNewFile();System.out.println(newFile);}
}public class test06 {public static void main(String[] args) {File file=new File("D:\\Java\\2021Java传智播客\\09_第九章 IO流-V10.0\\" +"01_File\\a");
//        deleteFile(file);HashMap<String,Integer> hashMap=new HashMap<>();count(new File("D:\\LeetCode"),hashMap);String s="a.txt";String[] split = s.split("\\.");for (String s1 : split) {System.out.println(s1);}System.out.println(hashMap);}public static void deleteFile(File file){if (file==null){return;}File[] files = file.listFiles();for (File file1 : files) {if (file1.isFile()){file1.delete();continue;}else {deleteFile(file1);}}file.delete();}public static void count(File file,HashMap<String,Integer> hashMap){File[] files = file.listFiles();if (files==null){return;}for (File file1 : files) {if (file1.isFile()){System.out.println(file1.getName());if (file1.getName().split("\\.").length<2){continue;}String s = file1.getName().split("\\.")[1];System.out.println(s);hashMap.put(s,hashMap.getOrDefault(s,0)+1);}else {count(file1,hashMap);}}}
}

2.IO流

(1)字节流

 

 

代码如下:

package com.xy;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;/*** @ProjectName: day01* @Package: com.xy* @ClassName: test08字节流* @Author: 杨路恒* @Description:* @Date: 2021/8/24 0024 10:51* @Version: 1.0*/
public class test08字节流 {public static void main(String[] args) throws IOException {//第二个参数就是续写开关,如果没有传递,默认就是false,// 表示不打开续写功能,那么创建对象的这行代码会清空文件
//        FileOutputStream fos=new FileOutputStream("day07\\b.txt",true);//如果第二个参数为true,表示打开续写功能//那么创建对象的这行代码不会清空文件FileOutputStream fos = null;try {fos = new FileOutputStream("day07\\b.txt");byte[] bytes = {6, 66, 66};String s = "\r\n";fos.write(bytes);
//        fos.write(bytes,1,2);} catch (IOException e) {e.printStackTrace();} finally {if (fos != null) {try {fos.close();} catch (IOException e) {e.printStackTrace();}}}}
}public class test09字节流 {public static void main(String[] args) throws IOException {//如果文件存在,那么就不会报错。//如果文件不存在,那么就直接报错。FileInputStream fis=new FileInputStream("day07\\b.txt");int read =0;//一次读取一个字节,返回值就是本次读到的那个字节数据//也就是字符在码表中对应的那个数字,//如果我们想要看到的是字符数据,那么一定要强转成charSystem.out.println(read);System.out.println((char)read);while ((read=fis.read())!=-1){System.out.println((char)read);//一次读取一个字节,返回值就是本次读到的那个字节数据//也就是字符在码表中对应的那个数字,//如果我们想要看到的是字符数据,那么一定要强转成char}fis.close();}
}

public class test10字节流 {public static void main(String[] args) throws IOException {FileInputStream fis=null;FileOutputStream fos=null;try {fis=new FileInputStream("C:\\Users\\Administrator\\Pictures" +"\\Saved Pictures\\1.jpg");fos=new FileOutputStream("day07\\1.jpg");int read=0;while ((read=fis.read())!=-1){fos.write(read);}} catch (IOException e) {e.printStackTrace();} finally {if (fis!=null){try {fis.close();fos.close();} catch (IOException e) {e.printStackTrace();}}}}
}
package com.xy;import java.io.*;/*** @ProjectName: day01* @Package: com.xy* @ClassName: test12字节缓冲流* @Author: 杨路恒* @Description:* @Date: 2021/8/24 0024 15:12* @Version: 1.0*/
public class test12字节缓冲流 {public static void main(String[] args) throws IOException {BufferedInputStream bis=null;       //在底层创建了一个默认长度为8192的字节数组。BufferedOutputStream bos=null;      //在底层也创建了一个默认长度为8192的字节数组。long l = System.currentTimeMillis();try {bis=new BufferedInputStream(new FileInputStream("D:" +"\\360安全浏览器下载\\" +"CentOS-7-x86_64-DVD-1804.iso"));bos=new BufferedOutputStream(new FileOutputStream("" +"day07\\1.iso"));System.out.println("开始拷贝数据");int length=0;while ((length=bis.read())!=-1){bos.write(length);}} catch (FileNotFoundException e) {e.printStackTrace();} finally {if (bis!=null){try {//方法的底层会把字节流给关闭。bis.close();bos.close();} catch (IOException e) {e.printStackTrace();}}}long l1 = System.currentTimeMillis();System.out.println("结束,时间"+(l1-l));}
}package com.xy;import java.io.*;/*** @ProjectName: day01* @Package: com.xy* @ClassName: test12字节缓冲流* @Author: 杨路恒* @Description:* @Date: 2021/8/24 0024 15:12* @Version: 1.0*/
public class test13字节缓冲流 {public static void main(String[] args) throws IOException {BufferedInputStream bis=null;       //在底层创建了一个默认长度为8192的字节数组。BufferedOutputStream bos=null;      //在底层也创建了一个默认长度为8192的字节数组。long l = System.currentTimeMillis();try {bis=new BufferedInputStream(new FileInputStream("D:" +"\\360安全浏览器下载\\" +"CentOS-7-x86_64-DVD-1804.iso"));bos=new BufferedOutputStream(new FileOutputStream("" +"day07\\1.iso"));System.out.println("开始拷贝数据");int length=0;byte[] bytes=new byte[1024];while ((length=bis.read(bytes))!=-1){bos.write(bytes,0,length);}} catch (FileNotFoundException e) {e.printStackTrace();} finally {if (bis!=null){try {//方法的底层会把字节流给关闭。bis.close();bos.close();} catch (IOException e) {e.printStackTrace();}}}long l1 = System.currentTimeMillis();System.out.println("结束,时间"+(l1-l));}
}

2.字符流

 

 

 代码如下:

package com.xy;import java.io.UnsupportedEncodingException;
import java.util.Arrays;/*** @ProjectName: day01* @Package: com.xy* @ClassName: test14字符流* @Author: 杨路恒* @Description:* @Date: 2021/8/24 0024 15:41* @Version: 1.0*/
public class test14字符流 {public static void main(String[] args) throws UnsupportedEncodingException {String s="手可摘星辰";byte[] bytes = s.getBytes();System.out.println(Arrays.toString(bytes));for (byte aByte : bytes) {System.out.println(aByte);}System.out.println("************");byte[] bytes1 = s.getBytes("GBK");System.out.println(Arrays.toString(bytes1));for (byte b : bytes1) {System.out.println(b);}byte[] b1={-26, -119, -117, -27, -113, -81, -26, -111, -104,-26, -104, -97, -24, -66, -80};byte[] b2={-54, -42, -65, -55, -43, -86, -48, -57, -77, -67};String s1=new String(b1);       //利用默认的UTF-8进行解码System.out.println(s1);String s2=new String(b2,"gbk");       //利用GBK进行解码System.out.println(s2);}
}public class test15字符流 {public static void main(String[] args) throws IOException {//创建字符输出流的对象
//        FileWriter fw=new FileWriter(new File("day07\\c.txt"));FileWriter fw=new FileWriter("day07\\c.txt");fw.write(6);char[] bytes={6,66,66};fw.write(bytes,0,2);fw.write("手可摘星辰");
//        fw.flush();       //刷新流。刷新完毕之后,还可以继续写数据fw.close();         //关闭流。释放资源。一旦关闭,就不能写数据}
}public class test16字符流 {public static void main(String[] args) throws IOException {//创建字符输入流对象
//        FileReader fr=new FileReader(new File("day07\\c.txt"));FileReader fr= null;try {fr = new FileReader("day07\\c.txt");int length=0;char[] bytes=new char[1024];while ((length=fr.read(bytes))!=-1){System.out.println(length);System.out.println(new String(bytes,0,length));}} catch (IOException e) {e.printStackTrace();} finally {if (fr!=null){fr.close();}}}
}

package com.xy;import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;/*** @ProjectName: day01* @Package: com.xy* @ClassName: test18字符缓冲输入流* @Author: 杨路恒* @Description:* @Date: 2021/8/24 0024 19:23* @Version: 1.0*/
public class test18字符缓冲输入流 {public static void main(String[] args) throws IOException {BufferedReader br= null;try {br = new BufferedReader(new FileReader("day07\\d.txt"));int length=0;char[] chars=new char[1024];System.out.println(br.readLine());      //一读读一整行,在之前,如果读不到数据,返回-1//但是readLine读不到数据返回nullwhile ((length=br.read(chars))!=-1){System.out.println(new String(chars,0,length));}} catch (IOException e) {e.printStackTrace();} finally {br.close();}}
}public class test19字符缓冲输出流 {public static void main(String[] args) throws IOException {BufferedWriter bw= null;try {bw = new BufferedWriter(new FileWriter("day07\\1.txt"));bw.write(6);char[] chars={6,66};bw.newLine();       //跨平台的回车换行bw.write(chars);bw.write("手可摘星辰");} catch (IOException e) {e.printStackTrace();} finally {bw.close();}}
}

3.对象操作流

 

 

 

代码如下:

public class test21转换流 {public static void main(String[] args) throws IOException {InputStreamReader isr=new InputStreamReader(new FileInputStream("" +"day07\\d.txt"));int length=0;while ((length=isr.read())!=-1){System.out.println((char) length);}isr.close();OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("day07\\2.txt"));osw.write("手可摘星辰");osw.close();}
}public class test22对象操作流 {public static void main(String[] args) throws IOException, ClassNotFoundException {User user=new User("杨大大","666");ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("day07\\3.txt"));//Exception in thread "main" java.io.NotSerializableException: com.xy.User//对象操作流对象要序列化oos.writeObject(user);oos.close();//Exception in thread "main" java.io.InvalidClassException:// com.xy.User; local class incompatible://如果我们修改了类中的信息,那么虚拟机会再次计算出一个序列号,把文件中的对象读到内存,本地中//的序列号和类中的序列号不一致了。//解决//我们手动给出,而且这个值不要变ObjectInputStream ois=new ObjectInputStream(new FileInputStream("day07\\3.txt"));User o = (User)ois.readObject();while (true){try {User o1 = (User)ois.readObject();} catch (IOException e) {break;}}System.out.println(o);ois.close();System.out.println(o.getName());}
}
package com.xy;import java.io.Serializable;/*** @ProjectName: day01* @Package: com.xy* @ClassName: User* @Author: 杨路恒* @Description:* @Date: 2021/8/25 0025 11:05* @Version: 1.0*/
//如果想要这个类的对象能被序列化,那么这个类必须要实现一个接口.Serializable
//Serializable接口的意义
//称之为是一个标记性接口,里面没有任何的抽象方法
//只要一个类实现了这个Serializable接口,那么表示这个类的对象可以被序列化。
public class User implements Serializable {private String name;private transient String password;private static final long serialVersionUID=1L;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public User(String name, String password) {this.name = name;this.password = password;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", password='" + password + '\'' +'}';}public User() {}
}public class test23Properties {public static void main(String[] args) {Properties properties=new Properties();properties.put("杨大大","恒大大");System.out.println(properties);properties.remove("杨大大");System.out.println(properties);properties.put("杨大大","恒大大");String s = properties.getProperty("杨大大");System.out.println(s);Set<Object> objects = properties.keySet();for (Object object : objects) {System.out.println(object);}}
}public class test24Properties {public static void main(String[] args) throws IOException {Properties prop=new Properties();FileReader fr=new FileReader("day07\\prop.properties");prop.load(fr);  //调用完load方法之后,文件中的键值对数据已经在集合中了fr.close();System.out.println(prop);prop.setProperty("杨大大","666");FileWriter fw=new FileWriter("day07\\prop1.properties");prop.store(fw,"");fw.close();}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/481896.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国科学家建立可与人脑突触数量相较的AI模型——“八卦炉”

来源&#xff1a;俄罗斯卫星通讯社中国科学家基于最新的一台配备双威处理器的超级计算机&#xff0c;建立了“脑级人工智能模型”——八卦炉&#xff08;BAGUALU&#xff09;。其具有174万亿个参数&#xff0c;可与人脑中的突触数量相媲美&#xff0c;将在从自动驾驶汽车到科学…

Java面试知识点:多线程

问题&#xff1a;Java面试知识点&#xff1a;多线程 答案&#xff1a; 1.线程 代码如下&#xff1a; package com.xy;/*** ProjectName: day01* Package: com.xy* ClassName: test01* Author: 杨路恒* Description:* Date: 2021/8/25 0025 16:57* Version: 1.0*/ public class…

基础科学研究需要哲学滋养

来源&#xff1a;人民网-人民日报 2017年3月28日作者&#xff1a;丘成桐&#xff08;清华大学丘成桐数学科学中心&#xff09;现代科技进步日新月异&#xff0c;不断拓展人类认知和活动的边界&#xff0c;广泛影响社会生产生活的各个方面。比如&#xff0c;高铁、飞机大大方便了…

Java面试知识点:网络编程

问题&#xff1a;Java面试知识点&#xff1a;网络编程 答案&#xff1a; 1.InetAddress 代码如下: package com.xy;import java.net.InetAddress; import java.net.UnknownHostException;/*** ProjectName: day01* Package: com.xy* ClassName: test01* Author: 杨路恒* Des…

游戏+与通用人工智能的实现

算法、算力与场景&#xff0c;是AI研究的关键要素。AI 对数据要求量极大&#xff0c;否则无法达到人类正确识别的程度。自 AlphaGo 一鸣惊人后,越来越多AI 研究团队意识到&#xff0c;游戏是 AI 的绝佳训练场之一。游戏推动科技创新上行一直以来我们很少把活泼轻松的游戏娱乐与…

A Survey on Knowledge Graphs___Representation, Acquisition and Applications.知识图谱综述:表示,获取,应用

知识图谱综述&#xff1a;表示、获取及应用 这是研究生第一篇综述文章&#xff0c;第一次读也是花了好几天的时间。 摘要:人类的知识提供了对世界的一种形式的理解。表征实体之间结构关系的知识图已成为认知和人的智能研究的热门方向。在这个调查中&#xff0c;我们提供了一…

李飞飞划重点的「具身智能」,走到哪一步了?

来源&#xff1a;选自Quanta magazine作者&#xff1a;Allison Whitten编译&#xff1a;机器之心编辑&#xff1a;张倩在前段时间的一篇文章中&#xff0c;李飞飞指出了计算机视觉未来的几个重要方向&#xff0c;其中最重要的一个就是具身智能。她认为&#xff0c;具身智能将成…

基于链接预测和卷积学习的Web服务网络嵌入

Web Service Network Embedding based on Link Prediction and Convolutional Learning 这是我读研的第一篇论文&#xff0c;也是花了好几天的时间。 基于链接预测和卷积学习的Web服务网络嵌入 摘要&#xff1a;为了在许多基本任务中&#xff0c;如基于Web的软件服务聚类、推荐…

芯片光刻路线图

来源&#xff1a;内容来自半导体行业观察&#xff08;ID&#xff1a;icbank&#xff09;编译&#xff1a;SPIE我们所知道的第一个半导体路线图可能是摩尔观察到的&#xff0c;以他为名字的“摩尔定律”预计&#xff0c;芯片的计算能力随着时间的增长呈指数增长。这促使芯片制造…

知识图谱常用指标:MRR、Hits@1、Hits@10、MR

知识图谱常用指标&#xff1a;MRR、Hits1、Hits10、MR 一、MRR MRR的全称是Mean Reciprocal Ranking&#xff0c;其中Reciprocal是指“倒数的”的意思。具体的计算方法如下&#xff1a; 其中是三元组集合&#xff0c;是三元组集合个数&#xff0c;是指第个三元组的链接预测排名…

科学创新四十年,我们可能还没搞明白科学和技术的基本概念

来源&#xff1a;澎湃新闻智库报告栏目撰文&#xff1a;周路明&#xff08;源创力离岸创新中心负责人&#xff0c;深圳市科协原主席&#xff09;中国系统推进科学和技术发展的工作始于改革开放&#xff0c;至今已经40余年。中国官方和民间发展科学和技术的热情在世界范围内都屈…

Python:Tensorflow中两个稀疏张量相乘

Python&#xff1a;Tensorflow中两个稀疏张量相乘 博主在想让两个稀疏张量进行相乘时&#xff0c;发现不能用tf.matmul、tf.sparse_matmul、tf.sparse_tensor_dense_matmul&#xff0c;看来tf内置的没有对两个SparseTensor相乘的函数&#xff0c;于是&#xff0c;我在网上找了相…

超越Yann LeCun:世界模型的学习和推理

来源&#xff1a;CreateAMind节选第二节&#xff0c;约4000字摘要了解大脑中的信息处理并创造通用人工智能是全世界科学家和工程师的长期愿望。人类智能的显着特征是在与包括自我在内的世界的各种互动中的高级认知和控制&#xff0c;这些不是预先定义的&#xff0c;而是随着时间…

有了这个标准,你就知道和你聊天的AI是什么水平了

来源&#xff1a;AI前线编辑&#xff1a;刘燕InfoQ 获悉&#xff0c;6 月 28 日&#xff0c;由清华大学计算机教授、智能技术与系统实验室副主任黄民烈发起&#xff0c;联合了十余家科研机构、二十多位知名学者共同制定的全球首个《AI 对话系统分级定义》&#xff08;以下简称《…

UCL汪军专访:从生命体决策出发,探索智能决策的安全与风险

来源&#xff1a;智源社区整理&#xff1a;沈磊贤编辑&#xff1a;李梦佳导读&#xff1a;我们的日常生活中无时无刻不涉及到决策&#xff0c;如果说感知智能是从观察到发现规律的过程&#xff0c;那么决策智能就是从规律再返回到感知世界&#xff0c;进而改变数据的过程。这样…

课程设计-毕业设计-JAVA画板课程设计---总之岁月漫长,然而值得等待。

在校大学生的一份辛苦劳动成果写了一个小画板程序。 任务书... 1 1.1设计内容... 1 1.2设计任务及具体要求... 1 1.3软件开发运行环境.. 1 2 本组课题... 1 2.1课题... 1 2.2本人任务... 2 3 程序功能简介... 2 1.画板具体功能.. 2 2.功能分析&#xff1a;... 2 …

忆阻器取代晶体管?时间问题!

来源&#xff1a;悦智网1947年&#xff0c;贝尔实验室发明了晶体管&#xff0c;开创了一个电子设备的时代&#xff0c;电子设备比体积庞大、易碎的真空管电子设备更小、运行更冷、功耗更低。晶体管用作二进制开关&#xff0c;以促进电流从关闭状态变为开启状态。收音机、计算器…

可微硬件:AI将如何重振摩尔定律的良性循环

来源&#xff1a;OneFlow撰文&#xff1a;吕坚平本文阐述了当今AI硬件渊源&#xff0c;跳脱过去芯片设计窠臼&#xff0c;以可微分GPU及可微分ISP为例&#xff0c;提倡以AI为本的可微分硬件理念。希望借此可重振软硬件彼此加持的雄风&#xff0c;缓解甚至逆转摩尔定律的衰退。据…

2nm就靠它了!ASML加速研发新一代光刻机:更贵、更强

来源&#xff1a;万物智能视界用于生产 2nm 芯片的 ASML 新款光刻机预计在 2025 年首次投入使用&#xff0c;对芯片厂商而言&#xff0c;“2nm 工艺战”已经打响。ASML 冲刺 0.55 NA EUV 光刻机对于芯片厂商而言&#xff0c;要想发展先进制程&#xff0c;光刻机是关键设备。而从…

中国机器人产业图谱(2022)

来源&#xff1a;阿里云加速器与行行查研究中心编辑&#xff1a;蒲蒲当前中国机器人产业呈现良好发展势头&#xff0c;产业规模快速增长&#xff0c;“十三五”以来年均复合增长率约为15%&#xff1b;产业格局不断优化&#xff0c;以智能制造、智慧服务为使命与愿景的机器人企业…