首页 > 代码库 > 复习java基础第六天(IO)
复习java基础第六天(IO)
一:File 类
• 输入:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。
• 输出:将程序(内存)数据输出到磁盘、光盘等存储设备中
• Java 的 IO 流主要包括输入、输出两种 IO 流,每种输入、输出流有可分为字节流和字符流两大类:
– 字节流以字节为单位来处理输入、输出操作
– 字符流以字符为单位来处理输入、输出操作
注意:输入、输出是以程序为参照。
• File 类代表与平台无关的文件和目录。
• File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。
如果需要访问文件内容本身,则需要使用输入/输出流。
部分操作File的方法:
练习代码:
package com.shellway.io;import java.io.File;import java.io.IOException;import org.junit.Test;public class IOtest { @Test public void test() throws IOException{ File file = new File("helloo.txt"); //获取文件的名称 String fileName = file.getName(); System.out.println(fileName); //获取文件的绝对路径 String filePath = file.getAbsolutePath(); System.out.println(filePath); //为文件重命名,不仅文件名变了且原来的文件路径跟着下面的路径变 // file.renameTo(new File("D:\\test\\day03\\helloo.txt")); String path = file.getPath(); System.out.println(path); //文件检测相关方法 System.out.println(file.exists()); File dir = new File("shellway"); System.out.println(dir.isDirectory()); System.out.println(dir.isFile()); //获取文件的常规信息 System.out.println(file.length());//单位为字节,一个汉字为两个字节,换行会加两个字节 //文件的相关操作 File file2 = new File("adc.txt"); file2.createNewFile();//创建一个空的文件 File file3 = new File("adc"); file3.mkdir();//创建一个空的目录 file2.delete();//删除一个文件 }}
1、IO流的分类
• 按流向分:
– 输入流
– 输出流
• 按处理的单位:
– 字节流(8 位的字节)
– 字符流(16 位的字节)
• 按流的角色
– 节点流:可以从一个特定的 IO 设备读/写数据的流
– 处理流:对一个已存在的流进行连接和封装,通过封装后的流来实现数据读/写操作
2、IO流体系:
二、InputStream & Reader
• InputStream 和 Reader 是所有输入流的基类。
• InputStream(典型实现:FileInputStream):
– int read()
– int read(byte[] b)
– int read(byte[] b, int off, int len)
• Reader(典型实现:FileReader):
– int read()
– int read(char [] c)
– int read(char [] c, int off, int len)
• 程序中打开的文件 IO 资源不属于内存里的资源,垃圾回收机制无法回收该资源,所以应该显式关闭文件 IO 资源。
练习代码:
1 package com.shellway.io; 2 import java.io.File; 3 import java.io.FileInputStream; 4 import java.io.FileNotFoundException; 5 import java.io.FileReader; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.io.Reader; 9 import org.junit.Test;10 public class IOtest {11 /**12 * 测试字符输入流13 * @throws IOException 14 */15 @Test16 public void testReader() throws IOException {17 Reader reader = new FileReader("helloo.txt");18 char []buffer = new char[10];19 int len = 0;20 while((len = reader.read(buffer)) != -1){21 for(int i = 0;i < len;i++){22 System.out.print(buffer[i]);23 }24 }25 reader.close();26 }27 /**28 * 测试字节输入流29 * @throws IOException30 */31 @Test32 public void testInputStream() throws IOException {33 //1、创建一个字符输入流34 InputStream in = new FileInputStream("helloo.txt");35 //2、读取文件内容36 //2、1一次读取一个字符,效率很低,不建议这样读,-1表示读到文件的结尾37 int result = in.read();38 while(result!=-1){39 System.out.print((char)result);40 result = in.read();41 }42 //2、2一次读取一组字符,43 byte []buffer = new byte[10];44 int length = 0;45 while((length = in.read(buffer))!=-1){46 for(int i = 0;i<length;i++){ //注意不能加“=”号47 System.out.print((char)buffer[i]);48 }49 //2、3把内容读取到字节数组的部分连续的元素中50 byte []result1 = new byte[1024*10];51 //10为字节数组的开始部分,第三个为实际长度。52 in.read(result1, 10, in.available());53 }54 //3、关闭字符流55 in.close();56 }57 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。