JAVA文件流

tech2023-07-07  100

###JAVA异常 public class 子类名 extends 父类名{}—继承父类,拥有父类特性,同时是对父类的扩展;

Throwable:异常框架,错误或异常的超类; Error:错误---无力解决的,无法控制的错误 Exception:异常---一个正常流程产生新的流程 RuntimeException:代码引起的异常,可通过修改代码解决 IOException:没办法通过代码处理的异常(文件找不到)。处理方法:1.将异常往上抛;2.try{}catch(){}

##File(文件)类常用整理##

boolean exists() 测试此抽象路径名表示的文件或目录是否存在。 boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件。 File[] listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 continue---跳过此次操作继续执行下一个操作 try()catch(){}---尝试执行这个操作 Exception e---异常情况 getName---提取名字 throws IOException---异常命令需补充方法体 \r\n---换行

###文件漏洞 File file = new File(“D:/网络安全”); File[] fs = file.listFiles(); for(File f:fs){ System.out.pr(f) }

扫描文件

package com.mtlk.demo; import java.io.File; public class 文件扫描 { public static void main(String[] strs){ //主方法 String[] drives = {"d:/"}; //需要扫描的文件路径,以数组形式表现 for(String drive : drives){ //将数组中的值一个一个提取 File file = new File(drive); //实例化File这个类 if(!file.exists()){ //判断这个空间是否存在 continue; //如果不存在就跳过 }else{ getFiles(file); //如果存在进入下面调用的方法中执行 } } } private static void getFiles(File file) { //构造方法:写入参数file,属于File类 File[] childFiles = file.listFiles(); //将文件名表示为一个数组 int length = childFiles.length; //设置循环规则 for(int i=0;i<length;i++){ try { //尝试进行以下操作 File childFile = childFiles[i]; //将文件一个一个取出来 if(childFile.isFile()){ //判断是否是一个文件 System.out.println(childFile); //如果是文件,那么输出 }else { getFiles(childFile); //如果不是文件那么返回再获取数组执行一次 } } catch (Exception e){ //如果遇到权限等异常,那么跳过此次执行 continue; } } } }

删除文件

package com.mtlk.demo; import java.io.File; public class 文件删除 { public static void main(String[] args) { String[] drives={"E:\\text"}; //需要删除的文件路径,以数组形式排列 for(String drive:drives){ //将数组的值一个一个提取处理 File file = new File(drive); //实例化File类 if(!file.exists()){ //判断是否存在 continue; //不存在就跳过此次操作 }else { getFile(file); //存在再执行下面调用的操作 } } } public static void getFile(File file){ //构造方法 File[] chidFile=file.listFiles(); //将文件名表示成一个数组 int length = chidFile.length; //控制循环次数 for (int i=0;i<length;i++){ try { File childsFile=chidFile[i]; //提取数组中每个值的下标 if(childsFile.isFile()){ //判断是否为一个正常文件 String name=childsFile.getName(); //如果是文件,那么将文件名转化为字符串 if (name.endsWith("jpg" )|| name.endsWith("docx")){ //判断字符串是否以这个字符结尾 childsFile.delete(); //如果是那么删除这个文件 } }else{ getFile(chidsFile); //如果不是文件,那么返回再执行一次 } }catch (Exception e){ continue; //如果遇到权限不够等情况,跳过此次操作 } } } }

##文件输入与输出

####输出:FileInputStream FileInputStream(String name) 通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。 int available() 返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取(或跳过)的估计剩余字节数。 用来确定字节容器的大小。 int read() 从此输入流中写入数据字节。 ** 原理:以字节流形式读取,用字节容器(数组)装取**

1.实例化这个类,输入读取路径。---字节流; 2.构造一个字节数组,字节流有多大,容器就构造多大;int临界值--2147483647=2097151kb=2047m 3.把字节流的东西读取到容器; 4.将数组还原为字符串 5.打印文件

java命令

package com.mtlk.demo; import java.io.FileInputStream; import java.io.IOException; public class 文件流出 { public static void main(String[] args)throws IOException { FileInputStream fis = new FileInputStream("E:\\text.txt"); //实例化类,指定要写出的路径 byte[] context = new byte[fis.available()]; //创建一个字节数组作为容器 fis.read(context); //将字节流导入容器中 String s = new String(context); //转化为字符串 System.out.println(s); //输出这个字节流内容 } }

####输入:FileOutputStream FileOutputStream(String name) 创建一个向具有指定名称的文件中写入数据的输出文件流。 void write(byte[] b) 将 b.length 个字节从指定 byte 数组写入此文件输出流中。 byte[] getBytes() 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。

java命令

package com.mtlk.demo; import java.io.FileOutputStream; import java.io.IOException; public class 文件写入 { public static void main(String[] args)throws IOException { String context = "JAVA真是优美的语言"; //写入的文字,字符串类型 FileOutputStream fos = new FileOutputStream("E:/text.txt",true); //实例化类,写入路径+true可以追加文本 fos.write(context.getBytes()); //将内容写入路径,以字节数组形式 fos.flush(); //刷新 fos.close(); //关闭 } }

###综合使用:错误日志 getMessage public String getMessage() 返回此 throwable 的详细消息字符串。

package com.mtlk.demo; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; public class 错误日志 { public static void main(String[] args) throws IOException { try { //尝试下面的操作 FileInputStream fis = new FileInputStream("E:/text/aa.txt"); //一个无法找到文件的路径 }catch (IOException e) { //异常时执行下面操作 FileOutputStream fos = new FileOutputStream("E:/text/log.txt",true); //异常时写入的路径 String date = new SimpleDateFormat("yyyy-hh-dd HH:mm:ss").format(new Date()); //写入的时间格式 String log = date + "" + e.getMessage()+ "" + "\r\n"; //写入的整体格式 fos.write(log.getBytes()); //以字节数组方式写入 fos.flush(); //刷新 fos.close(); //关闭 } } }

###综合使用:复制文件 package com.mtlk.demo;

import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class 复制文件 { public static void main(String[] args) throws IOException { FileInputStream fis = new FileInputStream("E:/text/text.txt"); //指定将要copy的文件源路径 byte[] context = new byte[fis.available()]; //创建一个字节数组接收它 fis.read(context); //读写到字节数组 FileOutputStream fos = new FileOutputStream("E:/demo.txt",true); //指定将要copy的文件目的路径 fos.write(context); //将文件写入到指定路径 fos.flush(); //刷新 fos.close(); //关闭 } }
最新回复(0)