1.流

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

      ②字符流:Reader、Writer

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

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

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

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

  c.应用:①序列化

      ②反序列化

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

package com.lovo.test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream; public class TestStream { public static void main(String[] args) { //功能:将D:/test.avi 拷贝到 F:/wudi.avi
FileInputStream fis = null;
FileOutputStream fos = null;
try {
//1、建立管道
fis = new FileInputStream("D:/test.avi");
fos = new FileOutputStream("F:/wudi.avi"); //2、操作管道
//方法一:
// int b = 0;
// while((b = fis.read()) != -1){
// fos.write(b);
// } //方法二:
byte[] b = new byte[1024];
int length = 0;//记录读取了多少个有效字节数
while((length = fis.read(b)) != -1){
fos.write(b,0,length);
fos.flush();//强制刷出缓冲区的内容
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
//3、关闭管道
if(fis != null){
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated block
e.printStackTrace();
}
}
if(fos != null){
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}

3.序列化与反序列化

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

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

  b.Serializable关键字:

    ①定义:可序列化接口

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

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

  c.transient关键字:

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

4.File 类

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

  b.方法:

    ①申明:

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

    ②其他:

String path1 = file.getAbsolutePath();        //获取绝对路径

String path2 = file.getPath();        //获取相对路径

long space = file.length();        //获取文件大小

long time = file.lastModified();        //最后修改时间(毫秒数)

System.out.println(file.isHidden());        //判断是否是隐藏文件

System.out.println(file.canWrite());        //判断是否是能被修改

System.out.println(dir.isFile());        //判断是否是文件

System.out.println(file.isDirectory());        //判断是否是文件夹

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

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

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

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

String[] subFileNames = dir.list();

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

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. 把域名绑定到某个项目,以nginx服务器为例

    一:登陆域名服务器平台,把域名解析到项目对应的IP上面. 二:配置nginx服务器 1./etc/nginx/conf.d/ 在服务器该目录下,添加.conf文件,如命名为:www.demo.com. ...

  2. mac显示隐藏文件

    苹果Mac OS X操作系统下,隐藏文件是否显示有很多种设置方法,最简单的要算在Mac终端输入命令. 显示/隐藏Mac隐藏文件命令如下(注意其中的空格并且区分大小写): 第一种 显示Mac隐藏文件的命 ...

  3. VBA笔记(三)——常用对象

    VBA实际上就是操作Excel,把Excel进行拆解,划分多层对象,由顶至下为(也可以说是层层包裹): Application:代表Excel程序本性,之后我们操作对象都在它之下,因为是唯一且至高点, ...

  4. AngularJS2.0 教程系列(一)

    http://my.oschina.net/u/2275217/blog/482178

  5. mac os 如何加载 Java Native/Shared Library (.jnilib)

    1 . 问题描述 今天在开发 Java 解压.z 文件的时候 需要加载 .jnilib 文件. 总是提示 Native code library failed to load. java.lang.U ...

  6. 修改Centos 6.5的yum源

    1.进入目录 cd /etc/yum.repos.d/ 2.保持副本 mv CentOS-Base.repo CentOS-Base.repo.backup 3.下载新的CentOS-Base.rep ...

  7. 关于C#中的 static

    一:感受 做商业项目才能更深刻和彻底的探索到技术的原理与真实面貌.以前在学校里面的时候这些C Sharp的基本语法,数据结构,面向对象背的滚瓜乱熟,那真得是背的!无论是从概念从理论上面来谈还是写一个小 ...

  8. MySQL 优化数据库对象

    一.考虑是用 procedure analyse() 函数对当前应用的表进行分析.字段类型是否可优化. 二.通过拆分提高表的访问效率. (A) 针对MyISAM表,有两种拆分方法: 垂直拆分:主码和某 ...

  9. POJ1002

    转化为七位数字 #include<iostream> #include<map> #include<cstring> #include<cstdio> ...

  10. getchar()(转)

    出处:http://www.cnblogs.com/jiangjun/archive/2012/05/16/2503676.html 1.从缓冲区读走一个字符,相当于清除缓冲区 2.前面的scanf( ...