[总结] I/O输入,输出
I/O输入,输出
第一:先判断到底是输入还是输出,站在程序的立场
第二:判断是传递字节,还是字符,决定管道粗细,字节流是最基本的数据输出管道。字符类型管道专门用来传送文本数据。
Java流的四大父类:1.字节流(包含InputStream,OutputStream)
2.字符流(包含Read,Write)
文件的拷贝,这里可能是在面试中出现的手工书写的代码最多的题之一
public class Testio {
public static void main(String[] args) {
FileReader fir = null;
FileWriter fiw = null;
try {
fir = new FileReader("E:/a/test.txt");
fiw = new FileWriter("E:/test.txt");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
char b [] = new char[1024];
int length = 0;
try {
while((length = fir.read(b)) != -1 ){
fiw.write(b, 0, length);
}
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
if (fir != null) {
try {
fir.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (fiw != null) {
try {
fiw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
对象序列化和反序列化
序列化:指将内存中的对象以二进制流的形式输出
反序列化:将输入的二进制对象流转化成内存中的一个对象
实现传输功能需要使用可序列化接口---Serializable
JavaBean规范中德第三项:应该加上Serializable接口
Transient 关键字修饰的属性,其值不参与序列化。
public class TestSerializable {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
对象序列化---将对象以二进制流的形式输出
StudentBean sb = new StudentBean("zhang3",24,true,new HomeAddress("成都市","建设北路","2-3号"));
ObjectOutputStream oos = null;
try {
oos = new ObjectOutputStream(new FileOutputStream("student.data"));
oos.writeObject(sb);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
if(oos != null){
try {
oos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
对象反序列化---将输入的二进制流转换为内存中的对象
反序列化是Java当中第2种产生对象的方式
StudentBean sb = null;
ObjectInputStream ois = null;
try {
ois = new ObjectInputStream(new FileInputStream("student.data"));
sb = (StudentBean)ois.readObject();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
if(ois != null){
try {
ois.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
System.out.println(sb.getName());
System.out.println(sb.getAge());
System.out.println(sb.getMyHome().getCity());
} }
File.类
表是文件或文件夹对象
作为文件对象的常用方法
.getAbsolutePath();获取绝对路径
.getPath();获取相对路径
.length();获取文件大小
作为文件夹对象的常用方法
String [] subFileName = dir.list();:得到文件夹下面的字文件,返回String数组
[总结] I/O输入,输出的更多相关文章
- 输入/输出系统的四种不同工作方式对CPU利用率比较
程序控制工作方式:输入/输出完全由CPU控制,整个I/O过程中CPU必须等待其完成,因此对CPU的能力限制很大,利用率较低 程序中断工作方式:CPU不再定期查询I/O系统状态,而是当需要I/O处理时再 ...
- JAVA里面的IO流(一)分类1(字节/字符和输入/输出)
java.io包中定义了多个流类型(流或抽象类)来实现输入/输出功能:可以从不同的角度对其进行分类: 按数据流的方向不同可以分为输入流和输出流 从文件读数据为输入流:往文件写数据为输出流 按处理数 ...
- [转]C语言文件输入/输出ACM改进版(freopen函数)
C语言文件输入/输出ACM改进版(freopen函数) 2009年5月27日 10:379,457 浏览数发表评论阅读评论 文章作者:姜南(Slyar) 文章来源:Slyar Home (www. ...
- ubuntu12.04软件中心打开错误和 ubuntu 包管理之“:E: 读错误 - read (5: 输入/输出错误) E: 无法解析或打开软件包的列表或是状态文件。”的解决
执行ubuntu软讲中心时打不开.老是崩溃,从终端也下载不了软件. 执行包管理的update或者search等等会报错: E: 读错误 - read (5: 输入/输出错误) E: 无法解析或打开软件 ...
- A Byte of Python 笔记(10)输入/输出:文件和储存器
第12章 输入/输出 大多数情况下,我们需要程序与用户交互.从用户得到输入,然后打印一些结果. 可以分别使用 raw_input 和 print 语句来完成这些功能.对于输出,可以使用多种多样的 s ...
- Python基础学习笔记---5.输入\输出 I\O文件操作目录
在很多时候,你会想要让你的程序与用户(可能是你自己)交互.你会从用户那里得到输入,然后打印一些结果.我们可以分别使用 raw_input 和 print 语句来完成这些功能.对于输出,你也可以使用多种 ...
- rm: 无法删除 "xxxxx.o" : 输入/输出错误.
rm: 无法删除 "xxxxx.o" : 输入/输出错误. 碰到无法删除的文件,以为完蛋了,要重装. 后面重启一下就可以了
- 第15章 I/O(输入/输出)
在变量.数组和对象中存储的数据是暂时存在的,程序结束后它们就会丢失.为了能够永久地保存创建的数据,需要将其保存在磁盘文件中,这样就可以在其它程序中使用它们.Java的I/O技术可以将数据保存到文本文件 ...
- Android Multimedia框架总结(二十)MediaCodec状态周期及Codec与输入/输出Buffer过程(附实例)
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/53183718 前言:前面几节都是 ...
- 第15章-输入/输出 --- 理解Java的IO流
(一)理解Java的IO流 JAVA的IO流是实现输入/输出的基础,它可以方便地实现数据的输入/输出操作,在Java中把不同的输入/输出(键盘.文件.网络连接等)抽象表述为"流"( ...
随机推荐
- 试听笔记:javascript入门精通
一.数据类型 1.原始类型:number.string.boolean.null.undefined 2.对象类型:Object (Function.Array.Date...) P.类型隐式转换:' ...
- What is a Database Trigger?
Link: http://www.essentialsql.com/what-is-a-database-trigger/ Copy... What is a Database Trigger? A ...
- MySQL查询语句(select)详解(1)
1.查询记录 select*from 表名 [where 条件];eg:select*from students;//查询 students 表中所有记录,所有字段的值都显示出来select fiel ...
- c++ 离散数学 群的相关判断及求解
采用C/C++/其它语言编程,构造一个n阶群<G={a,b,c,…},*>,G的阶|G|满足:3<=|G|<=6 1.判断该群是否是循环群,若是,输出该群的某个生成元. 2.给 ...
- java并发控制:lock
一.synchronized的缺陷 synchronized是java中的一个关键字,也就是说是Java语言内置的特性.那么为什么会出现Lock呢? 在上面一篇文章中,我们了解到如果一个代码块被syn ...
- CI 资源文件加入模板
CI 资源文件加入模板: (资源文件:图片,css,js ,业务文件csv,txt.....) 1.引入url辅助函数库 helper 2.使用base_url函数 生成文件物理硬盘地址 3. ...
- ios中调用友盟分享时qq可以分享但是微信失败,只显示文字,网页链接没有出现
问题如下,最后在老大各种替换的情况下,找到了原因,是因为图片失效了,友盟分享微信时必须需要图片才可以,如果服务器图片失效,则会失败: 注意下面的图片是否能够获取???????????????????? ...
- [dpdk] 熟悉SDK与初步使用 (三)(IP Fragmentation源码分析)
对例子IP Fragmentation的熟悉,使用,以及源码分析. 功能: 该例子的功能有二: 一: 将IP分片? 二: 根据路由表,做包转发. 路由表如下: IP_FRAG: Socket : ad ...
- JS检测移动端横竖屏
(function () { var supportOrientation = (typeof window.orientation == ...
- Python 打包工具cx_freeze 问题记录及解决办法
在节前的最后一天,解决了打包过程中遇到的所有问题,可以成功运行了!真是个好彩头,希望新的一年一切顺利! 以下是在使用cx_freeze过程中遇到的问题及解决办法(Win7) 问题描述:运行exe,启动 ...