Java语言定义了许多专门负责各种方式的输入/输出,这些类都被放在java.io包中。其中,所有输入流类都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类;而所有输出流都是抽象类OutputStream(字节输出流)或抽象类Writer(字符输出流)的子类。

  输入流

  InputStream类是字节输入流的抽象类,是所有字节输入流的父类。InputStream类里面包含很多方法,主要理解FileInputStream,了解一下BufferedInputStream和DataInputStream。

InputStream类常用的方法

方法 说明
read() 从输入流中读取数据的下一个字节。返回0-255范围内的int字节值。如果因为已经到达流末尾而没有可用的字节,则返回-1
read(bytr[] b) 从输入流中读入一定长度的字节,并以整数的形式返回字节数
close() 关闭此输入流并释放与该流关联的所有系统资源

  Java中的字符是Unicode编码,是双字节的。InputStream是用来处理字节的,在处理字符文本时不是很方便,所以java为字符文本的输入提供了专门的一套单独的类Reader,但Reader类并不是InputStream类的替换者,只是在处理字符串时简化了编程。

  Reader常用的一个方法就是FileReader。

  输出流

  OutputStream类是字节输入流的抽象类,此抽象类表示输出字节流的所有类的超类。OutputStream类中常用的也是FileOutputStream,了解BufferedOutputStream和DataOutputStream。

OutputStream类常用的方法

方法 说明
write(int b) 将制定的字节写入此输出流
write(byte[] b) 将b.length个字节从指定的byte数组写入此输出流
flush() 彻底完成输出并清空缓存区
closr() 关闭输出流

  Writer类是字符输出流的抽象类,所有字符输出类的实现都是它的子类,常用的就是FileWriter。

  File类

  File类是io包中唯一代表磁盘文件本身的对象。File类定义了一些与平台无关的方法来操作文件。可以通过调用File类中的方法,实现创建、删除、重命名文件等。File类既可以操作文件,也可以操作目录,即文件夹。

  首先是创建文件:

        String fileName = "d:\\aaa.txt";
File f = new File(fileName);
f.createNewFile();

  创建目录:

     String dirName = "d:\\aaa";
File f = new File(dirName);
f.mkdirs();

  删除文件:

       String fileName = "d:\\aaa.txt";
File f = new File(fileName);
f.delete();

  列出文件夹里的内容:

        String a = "I:\\CloudMusic\\";
File f = new File(a);
File[] fs = f.listFiles();
for(int i = 0; i<fs.length;i++){
if(fs[i].isDirectory()){
System.out.print("[目录]");
}
else if(fs[i].isFile()){
System.out.print("[文件]");
}
String s = fs[i].getPath();
System.out.println(s);
}

  列出文件名的数组:

        String[] b = f.list(); //输出文件名的数组 xx
for(int i = 0 ;i<b.length; i++){
System.out.println(b[i]);
}

  重命名或移动:

        String s1 = "d:\\aaa.txt";
String s2 = "d:\\bbb.txt";
File f1 =new File(s1);
File f2 = new File(s2);
f1.renameTo(f2);

  FileWriter用来把程序的内容写入其他文档:

        String a ="d:\\bbb.txt";
FileWriter w = new FileWriter(a,true);
w.write("\r\n");
w.write("hahahhahahahhah ");
w.close();

  Scanner用来把文档的内容读取到程序:

        StringBuilder sb = new StringBuilder();
String s = "d:\\bbb.txt";
File f = new File(s);
Scanner sc = new Scanner(f);
while(sc.hasNextLine()){
String str = sc.nextLine();
sb.append(str);
sb.append("\r\n");
}
sc.close();
System.out.println(sb.toString());

  读,FileInputStream 字节流:

        String a = "d:\\bbb.txt";
File f = new File(a);
FileInputStream fis = new FileInputStream(f);
byte[] b = new byte[(int)f.length()];
fis.read(b);
fis.close();

  写,FileOutputStream字节流:

        String s ="你愁啥,瞅你咋地";
String url ="d:\\bbb.txt";
File f = new File(url);
FileOutputStream fos = new FileOutputStream(f ,true);
byte[] b = s.getBytes();
fos.write(b);
fos.close();

  FileInputStream,FileOutputStream,Scanner(用来读文本),FileWriter(用来写文本)是重中之重

Java io流的概述的更多相关文章

  1. Java基础17:Java IO流总结

    更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...

  2. Java:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...

  3. java IO流详解

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  4. Java IO流学习总结

    Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  5. 揭开Java IO流中的flush()的神秘面纱

    大家在使用Java IO流中OutputStream.PrintWriter --时,会经常用到它的flush()方法. 与在网络硬件中缓存一样,流还可以在软件中得到缓存,即直接在Java代码中缓存. ...

  6. java io流 对文件夹的操作

    java io流 对文件夹的操作 检查文件夹是否存在 显示文件夹下面的文件 ....更多方法参考 http://www.cnblogs.com/phpyangbo/p/5965781.html ,与文 ...

  7. Java IO流题库

    一.    填空题 Java IO流可以分为   节点流   和处理流两大类,其中前者处于IO操作的第一线,所有操作必须通过他们进行. 输入流的唯一目的是提供通往数据的通道,程序可以通过这个通道读取数 ...

  8. Java IO流总结

    Java IO流分类以及主要使用方式如下: IO流 |--字节流 |--字节输入流 InputStream: int read();//一次读取一个字节 int read(byte[] bys);// ...

  9. java io流 运行错误时,保存异常到文件里面

    java io流 运行错误时,保存异常到文件里面 下面这个实例,运行后,输入数字,为正确,如果输入字符串,则报错,保存错误信息 //运行错误时,保存异常到文件里面 //下面这个实例,运行后,输入数字, ...

随机推荐

  1. [Usaco2008 Dec]Hay For Sale 购买干草[01背包水题]

    Description     约翰遭受了重大的损失:蟑螂吃掉了他所有的干草,留下一群饥饿的牛.他乘着容量为C(1≤C≤50000)个单位的马车,去顿因家买一些干草.  顿因有H(1≤H≤5000)包 ...

  2. c# 使用Codosys.dll(CDO)发送邮件

    准备工作: 从C:\Windows\System32将Codosys.dll拷到你的项目里,然后引用,或者直接引用Com组件也可以 然后看代码 ///<summary> /// 构造函数 ...

  3. 最小生成树算法prim and kruskal

    一.最小生成树定义:  从不同顶点出发或搜索次序不同,可得到不同的生成树  生成树的权:对连通网络来说,边附上权,生成树也带权,我们把生成树各边的权值总和称为生成树的权  最小代价生成树:在一个连通网 ...

  4. memcached内存分配及回收初探

    对memcached(后面简称mc) 的内存分配及回收机制进行了深度分析和测试,以下是一些学习的心得,和大家共同探讨一下,期望能抛砖引玉 mc简介: mc是由LiveJournal技术团队开发的一套分 ...

  5. [转]Jailbreak Detection Methods

    Source: http://blog.spiderlabs.com/2014/10/jailbreak-detection-methods.html Many iOS applications co ...

  6. 随手复习一下委托:delegate

    先骂个街,天儿太闷了…… 随手复习一下委托,delegate 是一种函数指针,是 .net 提供的一种安全的函数指针,翻译的也很贴切,像是委托人,又像代理人,通过“委托”来执行一些函数而不是直接调用它 ...

  7. Linux网络编程(二)

    Linux网络编程(二) 使用多进程实现服务器并发访问. 采用多进程的方式实现服务器的并发访问的经典范例. 程序实现功能: 1.客户端从标准输入读入一行文字,发送到服务器. 2.服务器接收到客户端发来 ...

  8. 设置 Ext.data.Store 传参的请求方式

    设置 Ext.data.Store 传参的请求方式 1.extjs 给怎么给panel设背景色 设置bodyStyle:'background:#ffc;padding:10px;', var res ...

  9. 使用Emacs:生存篇

    使用Emacs:生存篇 vim和Emacs都是很强大的编辑器.所以,入门有一定难度.这里不谈vim,谈Emacs下的生存--第一次使用Emacs时的使用. 1.emacs的安装: 在Fedora下: ...

  10. 由IEnumerable和IEnumerator的延伸

    相信大家在学习c#的时候,经常会看到IEnumerable.IEnumerator这样的接口或返回类型,在写代码时经常会对数组或List集合进行遍历.那IEnumerable和IEnumerator是 ...