java Io 流类详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java Io 流类详解相关的知识,希望对你有一定的参考价值。
关于java 流类的复习;习惯性的复习按照图结构一层层往下深入去了解去复习,最后通过代码来实现感觉印象会更深刻一些;
关于 I/O流:IO可以理解为JAVA用来传递数据的管道,创建一个IO,就相当于将管道与某个数据源连接到一起了.
字节流:数据流中最小的数据单元是字节。 字节:字节是一个八位的二进制数是一个很具体的存储空间;
字符流:数据流中最小的数据单元是字符; 字符:是一个抽象的符号,例如 1、2、3 、人 等 (并不是说直接传输字符,而是将字符按照指定的编码规则,转成对应的字节流后进行传输)
java的常用输入、输出流其实都是继承自4个抽象类,分别是:
基于单字节的InputStream,OutputStream类(面向字节形式的I/O)
基于双字节的Unicode代码单元的 Reader, Writer类(面向字符形式的I/O)
Reader(读入Unicode编码字节)
- CharArrayReader(从字符串数组中读取字符)
/*CharArrayReader 从字符串数组中读取字符 */ public static void chararrayreader() throws IOException { char [] a = new char[]{‘a‘,‘b‘,‘c‘}; CharArrayReader charArrayReader = new CharArrayReader(a); /* 当 CharArrayReader 读取不到字符时 返回值为-1 */ int i = 0; while ((i = charArrayReader.read())!= -1){ System.out.println("字符 :"+(char)i); } }
- InputStreamReader(从本地系统文件中读取字符序列)
- FileReader(InputStreamReader的子类)
- StringReader(从字符串数组中读取字符序列)
- PipedReader(从线程管道中读取字符序列)
- InputStreamReader(从输入流中读取数据)
/* 关于 从本地文件中读取 字符序列 */ public static void inputreader() throws IOException { /*从文件中 读取数据到 数据流 */ InputStream inputStream = new FileInputStream("E:\\\\test.txt"); /* 将字节流转换成 字符流 */ InputStreamReader inputStreamReader = new InputStreamReader(inputStream); char []cha = new char[1024]; int len = inputStreamReader.read(cha); System.out.println(new String(cha,0,len)); /* 关流 */ inputStreamReader.close(); }
Writer(写入) 这个不多讲 和上边reader 相反 一个写入,一个读出 直接上代码:
代码参考:http://blog.csdn.net/lanhuzi9999/article/details/36188047
/* 关于 从本地文件中读取 字符序列 */ public static void inputreader() throws IOException { /*从文件中 读取数据到 数据流 */ InputStream inputStream = new FileInputStream("E:\\\\test.txt"); /* 将字节流转换成 字符流 */ InputStreamReader inputStreamReader = new InputStreamReader(inputStream); char []cha = new char[1024]; int len = inputStreamReader.read(cha); System.out.println("本地文件:"+new String(cha,0,len)); /* 关流 */ inputStreamReader.close(); } /* Writer */ public static void writer() throws IOException { /*String Writer */ String string = "从今天起好好复习"; StringWriter stringWriter = new StringWriter(); stringWriter.write("你好吗 "); stringWriter.write("这是写入的 writer "); System.out.println(string+stringWriter.toString() ); /*OutputStreamWriter FileWriter*/ OutputStream out = System.out;//打印到控制台 // OutputStream out = new FileOutputStream("D:\\\\demo.txt");//打印到文件 OutputStreamWriter osr = new OutputStreamWriter(out);//输出 // OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\\\\demo.txt"));//两句可以综合到一句。 // int ch = 97;//a // int ch = 20320;//你 // osr.write(ch); String str = "你好吗?";//你好吗? osr.write(str); osr.flush(); osr.close(); } public static void transWriteByBuf() throws IOException { // OutputStream out = System.out;//打印到控制台。 OutputStream out = new FileOutputStream("D:\\\\demo.txt");//打印到文件。 OutputStreamWriter osr = new OutputStreamWriter(out);//输出 // OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\\\\demo.txt"));//综合到一句。 BufferedWriter bufw = new BufferedWriter(osr);//缓冲 // int ch = 97;//a // int ch = 20320;//你 // osr.write(ch); String str = "你好吗?\\r\\n我很好!";//你好吗? bufw.write(str); bufw.flush(); bufw.close(); }
File 类 (重点讲解)
- File 类的对象 表示了磁盘上的文件或者文件目录
- File类直接处理文件 和文件系统
- File类提供了方法 对文件或者文件目录进行操作
- File 常用方法
- 懒得写了 直接复制粘贴来源:http://www.jb51.net/article/36126.htm
创建方法
1.boolean createNewFile() 不存在返回true 存在返回false
2.boolean mkdir() 创建目录
3.boolean mkdirs() 创建多级目录
删除方法1.boolean delete()
2.boolean deleteOnExit() 文件使用完成后删除 -
判断方法
1.boolean canExecute()判断文件是否可执行
2.boolean canRead()判断文件是否可读
3.boolean canWrite() 判断文件是否可写
4.boolean exists() 判断文件是否存在
5.boolean isDirectory()
6.boolean isFile()
7.boolean isHidden()
8.boolean isAbsolute()判断是否是绝对路径 文件不存在也能判断
获取方法1.String getName()
2.String getPath()
3.String getAbsolutePath()
4.String getParent()//如果没有父目录返回null
5.long lastModified()//获取最后一次修改的时间
6.long length()
7.boolean renameTo(File f)
8.File[] liseRoots()//获取机器盘符
9.String[] list()
10.String[] list(FilenameFilter filter) - 常用方法实现
-
/*File 类 */ public static void File () throws IOException { System.out.println("woca "); /*创建一个路径*/ File file3 = new File("E://file//jj"); System.out.println( file3.mkdir()); /*创建一个文件 */ File file = new File("E://te.txt"); file.createNewFile(); /* 根据一个 基路径去创建文件 */ File file2 = new File(file3,"tt.txt"); file2.createNewFile(); /* 判断 file对象是否是 文件或者路径 */ System.out.println("是否是路径"+file3.isDirectory()); System.out.println("是否是文件"+file2.isFile()); /* 获取某个文件夹内文件的目录 */ File file4 = new File("E://workspace"); String names[] = file4.list(); for(String name :names) { System.out.println(name); } /* 删除文件 */ file2.delete(); }
以上是关于java Io 流类详解的主要内容,如果未能解决你的问题,请参考以下文章
JAVA中常用IO流类:FileInputStream和FileOutputStream
JAVA中常用IO流类:BufferedReader和BufferedWriter读取文件操作(优势:使用BufferedReader读取字符文件的速度要比我们之前使用的字节流和FileReader快
java内存流:java.io.ByteArrayInputStreamjava.io.ByteArrayOutputStreamjava.io.CharArrayReaderjava.io(代码片段
java缓冲字符字节输入输出流:java.io.BufferedReaderjava.io.BufferedWriterjava.io.BufferedInputStreamjava.io.(代码片段