IO流具体代码
练习代码:
package Demo1.JavaSe.NeusoftEdu.zuoye; import java.io.*; /** * @program: FirstDemo * @description: 第十天课:IO流 * @author: GuoTong * @create: 2020-08-24 09:20 **/ public class day10 { public static void main(String[] args) { //File类是描述文件或者文件夹的:它没有空参构造 File file = new File("G:/东软就业课/javaday01/FirstJava.java"); //判断文件存不存在 boolean exists = file.exists(); System.out.println(exists); //获取获取绝对路径 file.getAbsoluteFile(); //获取路径 file.getPath(); //获取文件名字 file.getName(); //获取文件上级目录 file.getParent(); //获取文件长度 file.length(); //修改文件名 file.renameTo(new File("G:/东软就业课/javaday01/GuoTong.java")); //根路径||盘符 / File fileA = new File("/"); //IDEA 当前项目路径 ./(可以省略) File fileB = new File("./"); //当前目录的上一级路径 ../ File fileC = new File("../"); } } class MyyTest { public static void main(String[] args) throws IOException { File file = new File("G:/东软就业课/javaday01/abc.txt"); //创建文件 boolean fileNewFile = file.createNewFile(); //创建文件夹 File dir2 = new File(file.getParent(), "dir2"); //判断文件夹是不是纯在 if (!dir2.exists()) { dir2.mkdir(); } //删除指定文件 removeDir(file); //判断指定目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称 File[] files = dir2.listFiles(); for (File file1 : files) { if (file1.isFile() && file1.getName().endsWith("jpg")) { System.out.println(file1); } } //遍历指定目录所有文件名称,包括子文件目录中的文件。 listAll(dir2); } //删除文件的方法 public static void removeDir(File dir) { File[] files = dir.listFiles(); for (File file : files) { if (file.isDirectory()) { removeDir(file); } else { System.out.println(file + ":" + file.delete()); } } System.out.println(dir + ":" + dir.delete()); } public static void listAll(File dir) { System.out.println(dir.getName()); //获取指定目录下当前的所有文件夹或者文件对象 File[] files = dir.listFiles(); for (int x = 0; x < files.length; x++) { if (files[x].isDirectory()) { listAll(files[x]); } else System.out.println(files[x].getName()); } } } /** * 字符流:输入流 Reader || 输出流 Writer * 字节流 输入流 InputStream ||输出流 OutputStream * <p> * 处理文件的:File基类流 * <p> * 使用流的步骤: * 1. */ class TestFileReader { //FileReader 使用 public static void main(String[] args) throws Exception { //File类关联文件 G:\dowload\IDEA\IDEAAN\IDEAWorkSpace\src\ File file = new File("./src/abc.txt"); System.out.println("文件存在与否:" + file.exists()); //创建FileReader对象, FileReader reader = new FileReader(file); //读取文件数据 int read = 0;//read ==-1 ,代表结束 while ((read = reader.read()) != -1) { System.out.print((char) read); } //读取完毕需要释放资源 reader.close(); } } class TestFileReader1 { //FileReader 使用2 public static void main(String[] args) throws Exception { //创建FileReader对象, FileReader fr = null; try { //1.实例化File类的对象,指明要操作的文件 File file = new File("./src/abc.txt"); System.out.println("文件存在与否:" + file.exists()); //2.提供具体的流 fr = new FileReader(file); //3.数据的读入 int data; while ((data = fr.read()) != -1) { System.out.print((char) data); } } catch (IOException e) { e.printStackTrace(); } finally { //4.流的关闭操作 if (fr != null) { try { fr.close(); } catch (IOException e) { e.printStackTrace(); } } } } } //文件复制 class TestCopyWord { public static void main(String[] args) { //1. //源文件 File file = new File("./src/abc.txt"); //目标复制的文件 File fileByCopy = new File("./src/abcs.txt"); FileReader fileReader = null; FileWriter fileWriter = null; try { //2. //创建文件字符输入流FileReader,文件输出流FileWriter fileReader = new FileReader(file); fileWriter = new FileWriter(fileByCopy);//如果不存在就创建,如果是存在就不创建 //3 // 循环,一边读一边写 int read = 0; while ((read = fileReader.read()) != -1) { fileWriter.write(read); } } catch (IOException e) { e.printStackTrace(); } finally { //关闭流 try { if (fileWriter != null) fileWriter.close(); if (fileReader != null) fileReader.close(); } catch (IOException e) { e.printStackTrace(); } } //文件复制成功提示 System.out.println("文件复制成功!!"); } } //文件复制第二版:节点流:手动数组缓冲方式 class TestCopyWord2 { public static void main(String[] args) { //1. //源文件 File file = new File("./src/abc.txt"); //目标复制的文件 File fileByCopy = new File("./src/abcs.txt"); FileReader fileReader = null; FileWriter fileWriter = null; try { //2. //创建文件字符输入流FileReader,文件输出流FileWriter fileReader = new FileReader(file); fileWriter = new FileWriter(fileByCopy);//如果不存在就创建,如果是存在就不创建 //3 // 开辟缓冲 char[] cBuf = new char[1024]; int len;//记录每次读入到cbuf数组中的字符的个数 while ((len = fileReader.read(cBuf)) != -1) { //每次写出len个字符 fileWriter.write(cBuf, 0, len); } } catch (IOException e) { e.printStackTrace(); } finally { //关闭流 try { if (fileWriter != null) fileWriter.close(); if (fileReader != null) fileReader.close(); } catch (IOException e) { e.printStackTrace(); } } //文件复制成功提示 System.out.println("文件复制成功!!"); } } //缓冲流:CopyFile class TestBufferCopyFile { public static void main(String[] args) throws IOException { //源文件 File file = new File("./src/abc.txt"); //目标复制的文件 File fileByCopy = new File("./src/abcs.txt"); FileReader fileReader = null; FileWriter fileWriter = null; fileReader = new FileReader(file); fileWriter = new FileWriter(fileByCopy); //带缓冲功能处理流 BufferedReader bufferedReader = new BufferedReader(fileReader); BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); //建议用下面这。。。逻辑性很好 //BufferedReader bufferedReader = new BufferedReader(new FileReader(new File("./src/abc.txt"))); //BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(new File("./src/abcs.txt"))); //使用方法:高效读取文本文件:bufferedReader.readLine();每次读取一行数据,如果没有数据则返回null String str; while ((str = bufferedReader.readLine()) != null) { bufferedWriter.write(str);//没有包含换行符 bufferedWriter.newLine();//添加换行符 //System.out.println(str); } //关闭流:只需要关闭外面的流 bufferedReader.close(); bufferedWriter.close(); System.out.println("复制成功!!"); } } //文件文本复制逻辑强的 Copy class TestFileCopy { public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader(new FileReader(new File("./src/abc.txt"))); BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(new File("./src/abcs.txt"))); //使用方法:高效读取文本文件:bufferedReader.readLine();每次读取一行数据,如果没有数据则返回null String str; while ((str = bufferedReader.readLine()) != null) { bufferedWriter.write(str);//没有包含换行符 bufferedWriter.newLine();//添加换行符 //System.out.println(str); } //关闭流:只需要关闭外面的流 bufferedReader.close(); bufferedWriter.close(); System.out.println("复制成功!!"); } } //图片copy:很明显不能使用字符流《字符流copy的图片是格式错误的,不能还原。 class TestImageCopy { public static void main(String[] args) throws IOException { //拓展图片加密:给图片加密 一个数被^两次就是这个数的本事。 File image = new File("receive.jpg"); //目标复制的文件 File imageByCopy = new File("receiveCopy.jpg"); //读取文件对象:输入流FileInputStream FileInputStream inputStream = new FileInputStream(image); //写文件对象:输出流FileOutputStream FileOutputStream outputStream = new FileOutputStream(imageByCopy); /* //加密图片 int len2; while ((len2=inputStream.read())!=-1){ outputStream.write(len2 ^12); }*/ /* int len; byte[] bytes = new byte[1024];//自己的数组缓冲 while ((len=inputStream.read(bytes))!=-1){ outputStream.write(bytes,0,len); }*/ //缓冲流 BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream); long openMillis = System.currentTimeMillis();//当前时间戳 int len; byte[] bytes = new byte[1024];//自己的数组缓冲 while ((len = bufferedInputStream.read(bytes)) != -1) { bufferedOutputStream.write(bytes, 0, len); } long endMillis = System.currentTimeMillis();//当前时间戳 //缓冲流比节点流要快的多》》》》》》 outputStream.close(); inputStream.close(); System.out.println("image Copy Success!!!"+(openMillis-endMillis)); } } //转换流 :GBK--(UTF-8) class TransferTest{ public static void main(String[] args) throws Exception { FileInputStream fileInputStream = new FileInputStream(new File("./abc.txt")); FileOutputStream fileOutputStream = new FileOutputStream(new File("./abcA.txt")); //转换流 InputStreamReader streamReader = new InputStreamReader(fileInputStream, "UTF-8"); OutputStreamWriter outputWriter = new OutputStreamWriter(fileOutputStream,"UTF-8"); int read; while ((read=streamReader.read())!=-1){ outputWriter.write(read); } fileInputStream.close(); } }
作者:隔壁老郭
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
Java入门到入坟
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端