JavaIO 总结
另外参考文章:http://www.ibm.com/developerworks/cn/java/j-lo-javaio/
一. File类
file.createNewFile();file.delete();file.list();file.listFiles();file.isFile();file.isDirectory();file.mkdirs();
删除目录下所有文件:
public void deleteAllFiles(File file) {
if (file.isFile() || file.list().length == 0) {
file.delete();
} else {
File[] delFiles = file.listFiles();
for (File delFile : delFiles) {
deleteAllFiles(delFile);
delFile.delete();
}
}
}
二. 流
流从结构上分为字节流(以字节为处理单位,可以处理二进制数据)和字符流(以字符为处理单位,无法处理二进制数据),它们的底层都是以字节流的方式来实现的
字节流的输入输出流基础是InputStream和OutputStream
字符流的输入输出流基础是Reader和Writer
InputStreamReader是字节流到字符流的桥梁。用于读文件,把文件中的字节读成字符。
OutputStreamWriter是字符流到字节流的桥梁。用于写文件,把字符以字节的形式写入文件。
Java.io体系结构:http://353588249-qq-com.iteye.com/blog/780343
读数据的流程:
open a stream
while more information
read information
close the stream
try {
InputStream is = new FileInputStream(filePath + "//abc.txt");
byte[] buff = new byte[200];
try {
// 标识每次实际读了多少字节
int length;
while (-1 != (length = is.read(buff, 0, 200))) {
String str = new String(buff, 0, length);
System.out.println(str);
}
is.close();
} catch (Exception e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
写数据的流程
open a stream
while more information
write information
close the stream
String content = "hello world";
// flag用于标识是否在文件内容后再添加内容还是覆盖原有内容,flag=true不覆盖,否则覆盖
OutputStream os = new FileOutputStream(filePath + "//abc.txt", boolean flag);
os.write(content.getBytes());
os.close();
OutputStream os = new FileOutputStream("file.txt");
Writer writer = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(writer);
bw.write("www.baidu.com");
bw.write("\n");
bw.write("www.qq.com");
bw.close();
InputStream is = new FileInputStream("file.txt");
Reader r = new InputStreamReader(is);
BufferedReader br = new BufferedReader(r);
String str = br.readLine();
while (null != str) {
System.out.println(str);
str = br.readLine();
}
br.close();
FileReader = new InputStreamReader(FileInputStream);
FileWriter = new OutputStreamWriter(FileOutputStream);
Serializable
package io;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.Serializable;
public class SerializableTest {
public static void main(String[] args) throws Exception {
Person p1 = new Person(10, "person1", 1.5);
Person p2 = new Person(20, "person2", 1.6);
Person p3 = new Person(30, "person3", 1.7);
OutputStream os = new FileOutputStream("person.dat");
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(p1);
oos.writeObject(p2);
oos.writeObject(p3);
oos.close();
InputStream is = new FileInputStream("person.dat");
ObjectInputStream ois = new ObjectInputStream(is);
Person p;
for (int i = 0; i < 3; i++) {
p = (Person) ois.readObject();
System.out.println(p.name + ", " + p.age + ", " + p.height);
}
ois.close();
}
}
class Person implements Serializable {
private static final long serialVersionUID = -6460642520310614043L;
int age;
String name;
double height;
public Person(int age, String name, double height) {
this.age = age;
this.name = name;
this.height = height;
}
}
Java NIO:参考:http://tutorials.jenkov.com/java-nio/index.html
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class CopyFile {
public static void main(String[] args) throws Exception {
String infile = "CopyFile.java";
String outfile = "CopyFile.txt";
FileInputStream fin = new FileInputStream(infile);
FileOutputStream fout = new FileOutputStream(outfile);
// read data from a channel into a buffer
FileChannel inChannel = fin.getChannel();
// write data from a buffer into a channel(Read data out of the Buffer)
FileChannel outChannel = fout.getChannel();
ByteBuffer buffer = ByteBuffer.allocate(1024);
while (true) {
buffer.clear();
// read data into buffer
int r = inChannel.read(buffer);
if (-1 == r) {
break;
}
buffer.flip();
// write data from buffer
outChannel.write(buffer);
}
inChannel.close();
outChannel.close();
fin.close();
fout.close();
}
}
JavaIO 总结的更多相关文章
- JavaIO学习笔记(五)
JavaIO前期准备 什么是同步 指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪 什么是异步 异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO ...
- javaIO系统----再看装饰者模式
javaIO系统拥有各种各样的类,尤其是每次要进行读写操作时,总会一层套一层的new,以前不明白为什么要这样做,不过学习了适配器模式后,对于这种做法立刻了解了:动态扩展IO的功能,使之符合使用者的习惯 ...
- Java学习日记之 Java-IO流
Java中的IO流在处理上分为字节流和字符流.字节流和字符流的区别 : 1.字节流读取的时候,读到一个字节就返回一个字节: 字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8 ...
- javaIO框架小析
IO即数据读写.数据是应用的中心要素,而数据读写的能力和可扩展性是编程平台的基础支撑. 概念框架 方式: 字节流 Byte 和 字符流 Char 方向: 输入 Input 和 输出 Output : ...
- javaIO流实现读写txt文件
javaIO流实现文件读写 文件写入: InputStreamReader BufferedReader 文件读取: FileOutputStream package javatest.basic22 ...
- javaIO操作之字节输出流--OutputStream
OutputStream /** * <li>输出单个字节:public abstract void write(int b) throws IOException ; * <li& ...
- [零] JavaIO入门简介 程序设计语言 为什么需要IO库
本文旨在引申出来Java IO的概念含义,作为学习JavaIO一个起步的了解知识点 部分内容引自<计算机操作系统第三版> 操作系统的文件管理 "在现代计算机系统中,要用到 ...
- [三]JavaIO之IO体系类整体设计思路 流的概念以及四大基础分类
从本文开始,将正式进入JavaIO的简介 在继续javaIO系列的文章之前 可以过去看一下 本人博客上的设计模式中的 适配器模式和装饰器模式 这会对接下来的阅读大有帮助 本文是从逻辑上介绍整个的J ...
- [四] JavaIO之类层次体系结构横向比对
IO家族类层次体系结构横向匹配 上一篇文章中主要介绍了JavaIO流家族的整体设计思路,简单回顾下 基本逻辑涉及数据源 流的方向,以及流的数据形式这三个部分的组合 按照流的数据形式和流的方向, ...
- [七]JavaIO之 PipedInputStream 和 PipedInputStream
管道简介
随机推荐
- Duilib第一步(I)-简介与环境搭建
Primus gradus et cognoscetis veritatem et veritas liberabit vos. --Johannes 8:32 Introduction Duili ...
- Hibernate Error: a different object with the same identifier value was already associated with the session
在执行Hibernate的Update操作时,报错:a different object with the same identifier value was already associated w ...
- 原生javascript 的MAP使用
var map = {}; // Map map = new HashMap();map[key] = value; // map.put(key, value);var value = map[ke ...
- kolla管理openstack容器
本文以nova-api容器为例,说明kolla如何将nova-api配置文件传入容器,容器如何启动nova-api服务并读取配置文件 注:第一部分比较无趣,二三部分 会有意思一些 1. nova-ap ...
- Zookeeper笔记3——原理及其安装使用
Zookeeper到底能干什么? 1.配置管理:这个好理解.分布式系统都有好多机器,Zookeeper提供了这样的一种服务:一种集中管理配置的方法,我们在这个集中的地方修改了配置,所有对这个配置感兴趣 ...
- JVM 指令
1.Demo 2.Class 文件说明 2.1 Class文件结构 2.2 jvm type, method signature 2.3 泛型表示 3.方法说明 3.1 方法结构 3.1.1 Thre ...
- Davinci DM6446 Codec Engine双核通信环境的搭建
根据前几篇文章,一个DM6446的系统已经架构完成.但是有很多人都喜欢TI的机制,毕竟双核软件开发对很多工程师来说是非常麻烦的事情,既然TI提供开发套件和开发包,那么直接做OEM就可以了,底层的东西不 ...
- Ubuntu 卸载cario-dock
偶然间听说别人用dock 可以把ubuntu美化,结果就装了个cairo-dock .结果是苹果mac的风格.不是很喜欢.于是就卸载,卸载过程中.发行卸载不掉. 尝试了很多方法. sudo apt-g ...
- VxWorks 基本启动方式
VxWorks 基本启动方式 按VxWorks内核的下载形式,VxWorks启动总体上分为两种方式:下载型和ROM 型. @下载型启动方式:bootrom+VxWorks.此时boot ...
- C#超级实用的一种类型—匿名类型
顾名思义 匿名类型就是没有名字的类型.当一个新的匿名对象定义与前面已经存在的类型定义的内部变量类型相同时,编译器就会只生成一个类定义,而不是各一个.匿名类型对象中仍然可以再包含匿名对象. 在C#3.0 ...