Java 之 I/O流
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流的更多相关文章
- java 字节流和字符流的区别 转载
转载自:http://blog.csdn.net/cynhafa/article/details/6882061 java 字节流和字符流的区别 字节流与和字符流的使用非常相似,两者除了操作代码上的不 ...
- java 21 - 12 IO流的打印流
打印流 字节流打印流 PrintStream 字符打印流 PrintWriter打印流的特点: A:只有写数据的,没有读取数据.只能操作目的地,不能操作数据源.(只能写入数据到文件中,而不能从文件中提 ...
- Java中的IO流系统详解(转载)
摘要: Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组. Java ...
- java 字节流和字符流的区别
转载自:http://blog.csdn.net/cynhafa/article/details/6882061 java 字节流和字符流的区别 字节流与和字符流的使用非常相似,两者除了操作代码上的不 ...
- Java中的IO流系统详解
Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组. Java 内用 U ...
- java开发之IO流
一直对IO流记不清楚,从别的地方转过来. 看下图: 流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两 ...
- java中的IO流
Java中的IO流 在之前的时候我已经接触过C#中的IO流,也就是说集中数据固化的方式之一,那么我们今天来说一下java中的IO流. 首先,我们学习IO流就是要对文件或目录进行一系列的操作,那么怎样操 ...
- Java IO 文件与流基础
Java IO 文件与流基础 @author ixenos 摘要:创建文件.文件过滤.流分类.流结构.常见流.文件流.字节数组流(缓冲区) 如何创建一个文件 #当我们调用File类的构造器时,仅仅是在 ...
- JAVA通过I/O流复制文件
JAVA通过I/O流复制文件 本文是对字节流操作,可以多音频视频文件进行操作,亲测有效. 个人感觉这个东西就是靠记的, 没什么好解释的,,,, import java.io.File; import ...
- java中的缓冲流BufferedWriter和BufferedReader
java中的缓冲流有BufferedWriter和BufferedReader 在java api 手册中这样说缓冲流: 从字符输入流中读取文本,缓冲各个字符,从而实现字符.数组和行的高效读取.可以指 ...
随机推荐
- MySQL练习-employees数据库(一)
安装一个数据库示例--employees 使用工具为Navicat--(ctrl + q: 打开新查询窗口 ctrl + r: 运行当前窗口内的所有语句) 参考http://www.cnblogs.c ...
- 海拔高度图*.dem文件的读取—vtkDEMReader
vtkDEMReader reads digital elevation files and creates image data. Digital elevation files are produ ...
- 【Java之对象清理】finalize()的用途
Java允许在类中定义一个名为finalize()的方法.它的工作原理是:一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法.并且在下一次垃圾回收动作发生时,才会真正回收 ...
- 关于JQ toggle 的注意事项
1.9.1以后的版本,好像不支持 jq 的 toggle function的用法啦.
- Linux 双网卡绑定
Linux 双网卡绑定 Linux 双网卡绑定双网卡绑定的常用模式:mode1:active-backup 模式,即主备模式.mode0:round-broin 模式,即负载均衡模式(需要交换机配置聚 ...
- mySQL 中主键值自动增加
转 http://stevenjohn.iteye.com/blog/976397 MySql 主键自动增长 博客分类: DataBase MySQLSQL 创建数据库,创建表. mysql> ...
- php时间类
1.需求 数据库的时间都是用10个长度的时间戳存储,拿出来的时候要转为更易读的格式 2.例子 <?php class Mydate{ public function get_millisecon ...
- PhotoSwipe插件的使用
1.首先引入插件 <link rel="stylesheet" href="css/photoswipe.css"> <link rel=&q ...
- ElasticSearch详解与优化设计
简介 概念 安装部署 ES安装 数据索引 索引优化 内存优化 1简介 ElasticSearch(简称ES)是一个分布式.Restful的搜索及分析服务器,设计用于分布式计算:能够达到实时搜索,稳定, ...
- mkdir命令
[mkdir] 创建目录 mkdir ===make directory 命令格式: mkdir [OPTION]... DIRECTORY 命令功能: 通过 mkdir 命令可以实现在指 ...