1.流

  a.分类:①字节流:InputStream、OutputStream

      ②字符流:Reader、Writer

  b.选择:①判断是 输入 还是 输出 (站在程序的立场上)

      ②判断是 字节 还是 字符 (决定粗细)

  c.注意:①字节管道是最根本的

      ②字符管道专门传输文本数据

  c.应用:①序列化

      ②反序列化

2.文件拷贝——最重要的一段手工书写的代码

  1. package com.lovo.test;
  2.  
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8.  
  9. public class TestStream {
  10.  
  11. public static void main(String[] args) {
  12.  
  13. //功能:将D:/test.avi 拷贝到 F:/wudi.avi
  14. FileInputStream fis = null;
  15. FileOutputStream fos = null;
  16. try {
  17. //1、建立管道
  18. fis = new FileInputStream("D:/test.avi");
  19. fos = new FileOutputStream("F:/wudi.avi");
  20.  
  21. //2、操作管道
  22. //方法一:
  23. // int b = 0;
  24. // while((b = fis.read()) != -1){
  25. // fos.write(b);
  26. // }
  27.  
  28. //方法二:
  29. byte[] b = new byte[1024];
  30. int length = 0;//记录读取了多少个有效字节数
  31. while((length = fis.read(b)) != -1){
  32. fos.write(b,0,length);
  33. fos.flush();//强制刷出缓冲区的内容
  34. }
  35. } catch (FileNotFoundException e) {
  36. // TODO Auto-generated catch block
  37. e.printStackTrace();
  38. } catch (IOException e) {
  39. // TODO Auto-generated catch block
  40. e.printStackTrace();
  41. } finally{
  42. //3、关闭管道
  43. if(fis != null){
  44. try {
  45. fis.close();
  46. } catch (IOException e) {
  47. // TODO Auto-generated block
  48. e.printStackTrace();
  49. }
  50. }
  51. if(fos != null){
  52. try {
  53. fos.close();
  54. } catch (IOException e) {
  55. // TODO Auto-generated catch block
  56. e.printStackTrace();
  57. }
  58. }
  59. }
  60. }
  61. }

3.序列化与反序列化

  a.定义:①序列化:将内存中的对象以二进制流的形式输出

      ②反序列化:将输入的二进制对象流转换为内存中的对象 (第二种产生对象的方式)

  b.Serializable关键字:

    ①定义:可序列化接口

    ②作用:标记性接口,只有实现了Serializable接口的类才能被序列化

    ③注意:集合对象都实现了接口Serializable,也可以进行直接进行序列化和反序列化

  c.transient关键字:

    transient关键字修饰的属性,其值不参与序列化

4.File 类

  a.作用:来表示操作系统的文件或文件夹对象

  b.方法:

    ①申明:

  1. File f = new File("F:/dddd.data");

    ②其他:

  1. String path1 = file.getAbsolutePath(); //获取绝对路径
  2.  
  3. String path2 = file.getPath(); //获取相对路径
  4.  
  5. long space = file.length(); //获取文件大小
  6.  
  7. long time = file.lastModified(); //最后修改时间(毫秒数)
  8.  
  9. System.out.println(file.isHidden()); //判断是否是隐藏文件
  10.  
  11. System.out.println(file.canWrite()); //判断是否是能被修改
  12.  
  13. System.out.println(dir.isFile()); //判断是否是文件
  14.  
  15. System.out.println(file.isDirectory()); //判断是否是文件夹

  c.文件分隔符——File.pathSeparator

  1. String path = "D:" + File.pathSeparator +"ffdfd" + File.pathSeparator + "fdfdf";

  d.文件夹对象的常用方法:

    ①得到文件夹下面的所有子文件或子文件夹的名字

  1. String[] subFileNames = dir.list();

    ②得到文件夹下面的所有子文件或子文件夹的File对象

  1. File[] subFiles = dir.listFiles();

Java 之 I/O流的更多相关文章

  1. java 字节流和字符流的区别 转载

    转载自:http://blog.csdn.net/cynhafa/article/details/6882061 java 字节流和字符流的区别 字节流与和字符流的使用非常相似,两者除了操作代码上的不 ...

  2. java 21 - 12 IO流的打印流

    打印流 字节流打印流 PrintStream 字符打印流 PrintWriter打印流的特点: A:只有写数据的,没有读取数据.只能操作目的地,不能操作数据源.(只能写入数据到文件中,而不能从文件中提 ...

  3. Java中的IO流系统详解(转载)

    摘要: Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组. Java ...

  4. java 字节流和字符流的区别

    转载自:http://blog.csdn.net/cynhafa/article/details/6882061 java 字节流和字符流的区别 字节流与和字符流的使用非常相似,两者除了操作代码上的不 ...

  5. Java中的IO流系统详解

    Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组. Java 内用 U ...

  6. java开发之IO流

    一直对IO流记不清楚,从别的地方转过来. 看下图: 流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两 ...

  7. java中的IO流

    Java中的IO流 在之前的时候我已经接触过C#中的IO流,也就是说集中数据固化的方式之一,那么我们今天来说一下java中的IO流. 首先,我们学习IO流就是要对文件或目录进行一系列的操作,那么怎样操 ...

  8. Java IO 文件与流基础

    Java IO 文件与流基础 @author ixenos 摘要:创建文件.文件过滤.流分类.流结构.常见流.文件流.字节数组流(缓冲区) 如何创建一个文件 #当我们调用File类的构造器时,仅仅是在 ...

  9. JAVA通过I/O流复制文件

    JAVA通过I/O流复制文件 本文是对字节流操作,可以多音频视频文件进行操作,亲测有效. 个人感觉这个东西就是靠记的, 没什么好解释的,,,, import java.io.File; import ...

  10. java中的缓冲流BufferedWriter和BufferedReader

    java中的缓冲流有BufferedWriter和BufferedReader 在java api 手册中这样说缓冲流: 从字符输入流中读取文本,缓冲各个字符,从而实现字符.数组和行的高效读取.可以指 ...

随机推荐

  1. MySQL练习-employees数据库(一)

    安装一个数据库示例--employees 使用工具为Navicat--(ctrl + q: 打开新查询窗口 ctrl + r: 运行当前窗口内的所有语句) 参考http://www.cnblogs.c ...

  2. 海拔高度图*.dem文件的读取—vtkDEMReader

    vtkDEMReader reads digital elevation files and creates image data. Digital elevation files are produ ...

  3. 【Java之对象清理】finalize()的用途

    Java允许在类中定义一个名为finalize()的方法.它的工作原理是:一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法.并且在下一次垃圾回收动作发生时,才会真正回收 ...

  4. 关于JQ toggle 的注意事项

    1.9.1以后的版本,好像不支持 jq 的 toggle function的用法啦.

  5. Linux 双网卡绑定

    Linux 双网卡绑定 Linux 双网卡绑定双网卡绑定的常用模式:mode1:active-backup 模式,即主备模式.mode0:round-broin 模式,即负载均衡模式(需要交换机配置聚 ...

  6. mySQL 中主键值自动增加

    转  http://stevenjohn.iteye.com/blog/976397 MySql 主键自动增长 博客分类: DataBase MySQLSQL  创建数据库,创建表. mysql> ...

  7. php时间类

    1.需求 数据库的时间都是用10个长度的时间戳存储,拿出来的时候要转为更易读的格式 2.例子 <?php class Mydate{ public function get_millisecon ...

  8. PhotoSwipe插件的使用

    1.首先引入插件 <link rel="stylesheet" href="css/photoswipe.css"> <link rel=&q ...

  9. ElasticSearch详解与优化设计

    简介 概念 安装部署 ES安装 数据索引 索引优化 内存优化 1简介 ElasticSearch(简称ES)是一个分布式.Restful的搜索及分析服务器,设计用于分布式计算:能够达到实时搜索,稳定, ...

  10. mkdir命令

    [mkdir]   创建目录     mkdir ===make directory 命令格式: mkdir [OPTION]... DIRECTORY 命令功能: 通过 mkdir 命令可以实现在指 ...