JavaSE学习笔记Day23
- 创业
- 2025-07-21 19:09:50

JavaSE学习笔记 Day23
个人整理非商业用途,欢迎探讨与指正!! « 上一篇
文章目录 JavaSE学习笔记 Day23···十九、流19.1流的概念19.2File类19.2.1File对象的创建19.2.2Java中的路径表示19.2.3File中的常用方法19.2.4FileNameFilter接口 19.3IO流19.3.1流的划分19.3.2字节流[重点]
··· 十九、流 19.1流的概念
在程序中,数据是需要传输的,例如将磁盘上的数据显示到浏览器上,需要将数据进行传输 java中将数据传输的技术称为"流"
19.2File类 19.2.1File对象的创建将系统中磁盘上的文件或者文件夹转换为java中的对象
public class Demo01 { public static void main(String[] args) { // 将D盘下的IO文件夹创建为java对象 // 文件夹 File file = new File("D:/IO"); // 判断是否存在的方法 System.out.println(file.exists()); // 文件 file = new File("D:/IO/a.txt"); System.out.println(file.exists()); // 分割符可以使用 / 或者 \\(转义字符) file = new File("D:\\IO\\a.txt"); System.out.println(file.exists()); } } 19.2.2Java中的路径表示相对路径: 相对于当前的项目或者工程位置 绝对路径: 在磁盘上的位置
public class Demo02 { public static void main(String[] args) { // 绝对路径 File file = new File("D:/IO/a.txt"); System.out.println(file.exists()); // 相对路径 // 以/开头(\\) 表示当前项目的所在磁盘(省略了当前项目的所在磁盘) // 我的项目在D盘: /省略了D: File file2 = new File("/IO/a.txt"); System.out.println(file2.exists()); file2 = new File("/02-tools"); System.out.println(file2.exists()); // 不以/开头 针对当前项目的根路径 File file3 = new File("a.txt"); System.out.println(file3.exists()); // 创建IO/c.txt对象 file3 = new File("IO/c.txt");//当前项目中的IO文件夹下的c.txt文件 System.out.println(file3.exists()); // 创建com.qf.test01.Demo02文件对象 file3 = new File("src/com/qf/test01/Demo02.java"); System.out.println(file3.exists()); } } 19.2.3File中的常用方法 public class Demo03 { // File的常用方法 public static void main(String[] args) { File file = new File("IO/d.txt"); // 创建一个文件 try { // 创建一个文件 file.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public class Demo04 { // 创建文件夹(目录) // mkdir:创建一个目录,若父级目录不存在,则不创建(只能创建一层目录) // mkdirs:创建一个目录,若父级目录不存在,则会一起创建(可以创建多层目录) public static void main(String[] args) { File file = new File("java"); // // file.mkdir(); // file.mkdirs(); file = new File("se/io"); // file.mkdir(); file.mkdirs(); } } public class Demo05 { public static void main(String[] args) { // 删除方法,删除文件或者空目录 File file = new File("a.txt"); file.delete(); file = new File("IO"); // 非空目录无法删除 file.delete(); file = new File("java"); // 空的目录可以删除 file.delete(); file = new File("se"); file.delete(); // 判断目录或者是文件是否存在 System.out.println(file.exists()); // 获取文件或者文件夹的大小 System.out.println(file.length()); System.out.println(new File("b.txt").length()); } } public class Demo06 { public static void main(String[] args) { File file = new File("IO/c.txt"); // 绝对路径的String格式 System.out.println(file.getAbsolutePath()); // 返回绝对路径 返回值是File System.out.println(file.getAbsoluteFile()); // 获取文件(夹)的名字 System.out.println(file.getName()); // 获取父目录 System.out.println(file.getParent()); // 判断是否为目录 System.out.println(file.isDirectory()); // 判断是否为文件 System.out.println(file.isFile()); file = new File("D:\\01-classin\\14-qf-jy-2305\\01-java\\03-课堂代码\\workspace_JAVASE\\20231221-25-JavaSE-IO流\\IO\\c.txt"); // 获取路径 System.out.println(file.getPath()); System.out.println("--------------------"); // 获取目录中的所有文件列表 查看D盘下的所有文件和目录 file = new File("D:/"); File[] listFiles = file.listFiles(); for (File file2 : listFiles) { System.out.println(file2); } System.out.println("--------------------"); // 可以查看src下的所有内容 file = new File("src/com/qf/test01"); listFiles = file.listFiles(); for (File file2 : listFiles) { System.out.println(file2); } } } 19.2.4FileNameFilter接口文件过滤器接口
public class Demo07 { public static void main(String[] args) { File file = new File("src/com/qf/test01"); // 对文件进行过滤 // file.listFiles(new MyFilter()); File[] listFiles = file.listFiles(new FilenameFilter() { // dir当前调用者 name具体的名字 @Override public boolean accept(File dir, String name) { // System.out.println(dir+","+name); // 帮助我们得到想到的文件 return name.startsWith("Test"); } }); for (File f : listFiles) { System.out.println(f); } } } class MyFilter implements FilenameFilter { @Override public boolean accept(File dir, String name) { // TODO Auto-generated method stub return false; } } 19.3IO流文件是内存与存储设备之间的数据传输通道载体,需要借助流进行传输 所有的IO操作都会抛出IOException异常 所有的IO操作需要将资源关闭
19.3.1流的划分按照方向划分: 输出流:将内存中的内容写入到磁盘中(存进去) 输入流:将存储设备中的内容读入到内存中(拿出来) 按照单位划分: 字节流:以字节为单位,进行所有文件的读与写 字符流:以字符为单位,只可以对文本数据进行读写(字符流是由字节流转换来的) 按照功能划分: 节点流:具有实际数据传输功能的流(实现类) 过滤流:在上述节点流的基础上进行功能的提升
19.3.2字节流[重点]字节流: 抽象类: InputStream:字节输入流 读取内容 OutputStream:字节输出流 写入内容 子类: FileInputStream:文件字节输入流 FileOutputStream:文件字节输出流
public class Demo01 { // 字节输出流 public static void main(String[] args) throws IOException { // 创建FileOutputStream对象,可以向参数中的File内去写内容 // 文件可以不存在,第一次写的时候FileOutputStream会创建一个文件 // 若文件存在,直接向对应的文件中写内容 FileOutputStream fos = new FileOutputStream(new File("IO/hello.txt")); // 写入一个int数据 // 一次写入一个字符 fos.write(97); fos.write(65); fos.write(90); fos.write(94); // 一次写入一个byte[] byte[] bs = {97,98,99,100,101}; fos.write(bs); // 重载方法 // 指定的开始的位置,和长度 fos.write(bs, 2, 3); System.out.println("写入成功!"); // 所有的流资源都需要关闭 fos.close(); } } public class Demo02 { public static void main(String[] args) throws IOException { // fos一共有四个构造方法 // 1.通过file创建fos对象 // FileOutputStream fos = new FileOutputStream(new File("IO/hello.txt")); // 2.通过文件名(String path)创建fos对象 // FileOutputStream fos = new FileOutputStream("IO/hello.txt"); // 3.通过file和string都有一个append重载的构造方法 append的作用是内容的追加 // FileOutputStream fos = new FileOutputStream("IO/hello.txt",true); FileOutputStream fos = new FileOutputStream(new File("IO/hello.txt"),true); fos.write(97); System.out.println("写入成功!"); // 所有的流资源都需要关闭 fos.close(); } } public class Demo03 { public static void main(String[] args) throws IOException { // 读的文件必须是真实存在的 FileInputStream fis = new FileInputStream("IO/hello.txt"); // 读取内容 读取到结尾返回-1 // 一次读取一个字节 int read = fis.read(); /*System.out.println(read); read = fis.read(); System.out.println(read); read = fis.read(); System.out.println(read); read = fis.read(); System.out.println(read);*/ while(read != -1) { System.out.print((char)read); // 再向下读取一次 read = fis.read(); } fis.close(); } } public class Demo04 { public static void main(String[] args) throws IOException { // 读的文件必须是真实存在的 FileInputStream fis = new FileInputStream("IO/hello.txt"); // 读取按照byte[]进行读取 // 从流中将内容存储到byte[]中 // 数组的大小是多少都是ok的,一般情况下每次读取文件的大小1kb~4kb(对于字节流读取文件的速度是最快的) byte[] bs = new byte[1024];//1kb System.out.println(Arrays.toString(bs)); // 返回值为文件内容的长度 // int a = fis.read(bs); int a = fis.read(bs, 10, 10);//放到数组中的某个位置 off开始位置,len长度 System.out.println(a); // byte[]中是有值的 System.out.println(Arrays.toString(bs)); System.out.println(new String(bs,0,a)); fis.close(); } }JavaSE学习笔记Day23由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“JavaSE学习笔记Day23”
上一篇
卷积神经网络的学习与实现