java 流类_java Io 流类详解

关于java  流类的复习;习惯性的复习按照图结构一层层往下深入去了解去复习,最后通过代码来实现感觉印象会更深刻一些;

aa28f2eedc136815909eddb320f66b2a.png

关于 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() throwsIOException {char [] a = new char[]{'a','b','c'};

CharArrayReader charArrayReader= newCharArrayReader(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() throwsIOException {/*从文件中 读取数据到 数据流*/InputStream inputStream= new FileInputStream("E:\\test.txt");/*将字节流转换成 字符流*/InputStreamReader inputStreamReader= newInputStreamReader(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() throwsIOException {/*从文件中 读取数据到 数据流*/InputStream inputStream= new FileInputStream("E:\\test.txt");/*将字节流转换成 字符流*/InputStreamReader inputStreamReader= newInputStreamReader(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() throwsIOException {/*String Writer*/String string= "从今天起好好复习";

StringWriter stringWriter= newStringWriter();

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() throwsIOException {//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 () throwsIOException {

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();

}

附上  测验代码:

import java.io.*;/*** Created by 杨一 on 2017/4/28.

* java 流*/

public classIO {public static void main(String []args) throwsIOException {

inputreader();

writer();

File();

}/*CharArrayReader 从字符串数组中读取字符*/

public static void chararrayreader() throwsIOException {char [] a = new char[]{'a','b','c'};

CharArrayReader charArrayReader= newCharArrayReader(a);/*当 CharArrayReader 读取不到字符时 返回值为-1*/

int i = 0;while ((i = charArrayReader.read())!= -1){

System.out.println("字符串数组中 :"+(char)i);

}

}/*关于 从本地文件中读取 字符序列*/

public static void inputreader() throwsIOException {/*从文件中 读取数据到 数据流*/InputStream inputStream= new FileInputStream("E:\\test.txt");/*将字节流转换成 字符流*/InputStreamReader inputStreamReader= newInputStreamReader(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() throwsIOException {/*String Writer*/String string= "从今天起好好复习";

StringWriter stringWriter= newStringWriter();

stringWriter.write("你好吗 ");

stringWriter.write("这是写入的 writer ");

System.out.println(string+stringWriter.toString()

);

OutputStream out= System.out;//打印到控制台

OutputStream out1 = new FileOutputStream("D:\\demo.txt");//打印到文件

OutputStreamWriter osr = new OutputStreamWriter(out);//输出

OutputStreamWriter osr1 = 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() throwsIOException {//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 类*/

public static void File () throwsIOException {

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();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值