写点什么

Java 基础面试题——IO 流,Netty 时间轮调度算法原理分析

用户头像
极客good
关注
发布于: 刚刚
  • 使用 transient 修饰属性,这个属性就不能序列化

  • 静态属性不能序列化

  • 序列化多个对象,可以借助集合来实现

[](

)字符流


// 传统字节流读取


psvm(String[] args){


// 1. 创建 FileInputStream 对象


FileInputSteam fis = new FileInputStream("路径");


// 2. 读取


int data = 0;


while((data = fis.read()) != -1){


sout((char)data);


}


// 3. 关闭


fis.close();


}

[](

)字符缓冲流


[白嫖资料](


)


BufferedReader / BufferedWriter


高效读写、支持输入换行符、可一次写一行读一行


psvm(String[] args) throws Exception{


// 创建缓冲流


FileReader fr = new FileReader("..");


BufferedReader br = new BufferedReader(fr);


// 读取


// 1. 第一种方式


char[] buf = new char[1024];


int count = 0;


while((count = br.read(buf)) != -1){


sout(new String(buf, 0, count));


}


// 2. 第二种方式 一行一行读取


String line = null;


while((line = br.readLine()) != null){


sout(line);


}


// 关闭


br.close();


}


psvm(String[] args){


// 1. 创建 BufferedWriter 对象


FileWriter fw = new FileWriter("..");


BufferedWriter bw = new BufferedWriter(fw);


// 2. 写入


for(int i = 0; i < 10; i ++){


bw.write("写入的内容");


vw.newLine(); // 写入一个换行符


bw.flush();


}


// 3. 关闭


bw.close(); // 此时会自动关闭 fw


}


转换流


桥转换流 InputStreamReader / OutputStreamWriter


可将字节流转换为字符流


可设置字符的编码方式


psvm(String[] args) throws Exception{


// 1 创建 InputStreamReader 对象


FileInputStream fis = new FisInputStream("..");


InputStreamReader isr = new InputStreamReader(fis, "utf-8");


// 2 读取文件


int data = 0;


while((data = isr.read()) != -1){


sout((char)data);


}


// 3 关闭


isr.close();


}


psvm(String[] args) throws Exception{


// 1 创建 OutputStreamReader 对象


FileOutputStream fos = new FisOutputStream("..");


OutputStreamWRITER osw = new OutputStreamReader(fos, "utf-8");


// 2 写入


for(int i = 0; i < 10; i ++){


osw.write("写入内容");


osw.flush();


}


// 3 关闭


osw.close();


}


File 类


/*


File 类的使用


  1. 分隔符

  2. 文件操作

  3. 文件夹操作


*/


public class Demo{


psvm(String[] args){


separator();


}


// 1. 分隔符


public static void separator(){


sout("路径分隔符" + File.pathSeparator);


sout("名称分隔符" + File.separator);


}


// 2. 文件操作


public static void fileOpen(){


// 1. 创建文件


if(!file.exists()){ // 是否存在


File file = new File("...");


boolean b = file.creatNewFile();


}


// 2. 删除文件


// 2.1 直接删除


file.delete(); // 成功 true


// 2.2 使用 jvm 退出时删除


file.deleteOnExit();


// 3. 获取文件信息


sout("获取绝对路径" + file.getAbsolutePaht());


sout("获取路径" + file.getPath());


sout("获取文件名称" + file.getName());


sout("获取夫目录" + file.getParent());


sout("获取文件长度" + file.length());


sout("文件创建时间" + new Date(file.lashModified()).toLocalString());


// 4. 判断


sout("是否可写" + file.canWrite());


sout("是否是文件" + file.isFile());


sout("是否隐藏" + file.isHidden());


}


// 文件夹操作


public static void directoryOpe() throws Exception{


// 1. 创建文件夹


File dir = new File("...");


sout(dir.toString());


if(!dir.exists()){


//dir.mkdir(); // 只能创建单级目录


dir.mkdirs(); /


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


/ 创建多级目录


}


// 2. 删除文件夹


// 2.1 直接删除


dir.delete(); // 只能删除最底层空目录


// 2.2 使用 jvm 删除


dir.deleteOnExit();


// 3. 获取文件夹信息


sout("获取绝对路径" + dir.getAbsolutePaht());


sout("获取路径" + dir.getPath());


sout("获取文件名称" + dir.getName());


sout("获取夫目录" + dir.getParent());


sout("获取文件长度" + dir.length());


sout("文件夹创建时间" + new Date(dir.lashModified()).toLocalString());


// 4. 判断


sout("是否是文件夹" + dir.isFile());


sout("是否隐藏" + dir.isHidden());


// 5. 遍历文件夹


File dir2 = new File("...");


String[] files = dir2.list();


for(String string : files){


sout(string);


}


// FileFilter 接口的使用


File[] files2 = dir2.listFiles(new FileFilter(){


@Override


public boolean accept(File pathname){


if(pathname.getName().endsWith(".jpg")){


return true;


}


return false;


}


});


for(File file : files2){


sout(file.getName());

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
Java基础面试题——IO流,Netty时间轮调度算法原理分析