- 浏览: 250587 次
- 性别:
- 来自: 济南
文章分类
- 全部博客 (303)
- c (31)
- c++ (16)
- java (18)
- c# (1)
- python (3)
- java web (6)
- oracle (7)
- sqlserver (2)
- mysql (2)
- android (24)
- android系统 (15)
- android多媒体部分 (15)
- android游戏 (12)
- linux (26)
- javaScript (1)
- ajax (1)
- node JS (2)
- html (5)
- apache (3)
- jboss (1)
- weblogic (0)
- 通信协议 (10)
- 云计算 (1)
- 分布式 (5)
- ejb (1)
- webservice (5)
- 设计模式 (16)
- JNI (6)
- swing (13)
- 版本控制 (1)
- UML (1)
- xml (4)
- spring (5)
- hibernate (5)
- struts1 (3)
- struts2 (4)
- ibatis (0)
- tomcat (2)
- 心得体会 (1)
- css (1)
- 嵌入式 (41)
- arm体系结构 (10)
IO 两大主流 16位和8位
16位对应writer和reader
fileWriter /fileReader 对文件进行读写
示例代码:
FileWriter out=new FileWriter("test.txt");
out.write("张三");
out.close();
char[] buf=new char[1024];
FileReader in=new FileReader("test.txt");
int len=in.read(buf);
System.out.println(new String(buf,0,len));
StringWriter/StringReader 对内存里的位置进行读写
示例代码如下:
try {
throw new Exception("test");
} catch (Exception e) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
System.out.println(e.getMessage());
// System.out.println(sw.toString());
}
PipedWriter/PipedReader 两个线程间进行通讯
8位对应InputStream和OutputStream
fileInputStream/FileOutputStream 对文件进行读写
示例代码:
public static void main(String[] args) throws Exception
{
FileOutputStream out=new FileOutputStream("test.txt");
out.write("张三".getBytes());
byte[] buf=new byte[1024];
File f=new File("test.txt");
FileInputStream in=new FileInputStream(f);
int len=in.read(buf);
System.out.println(new String(buf,0,len));
in.close();
}
ByteArrayInputStream/ByteArrayOutputStream 对字节数组进行读写
示例代码:
public static void main(String[] args)
{
String tmp="abc";
byte[] src=tmp.getBytes();
ByteArrayInputStream input=new ByteArrayInputStream(src);
ByteArrayOutputStream output=new ByteArrayOutputStream();
transform(input,output);
byte[] result=output.toByteArray();
System.out.println(new String(result));
transform(System.in,System.out);
}
public static void transform(InputStream in,OutputStream out)
{
int ch=0;
try
{
while((ch=in.read())!=-1)
{
int upperCh=(int)(Character.toUpperCase((char)ch));
out.write(upperCh);
}
}catch(Exception e)
{
e.printStackTrace();
}
}
PipedInputStream/PipOutputStream 线程间通讯使用
示例代码:
class Sender extends Thread {
private PipedOutputStream out = new PipedOutputStream();
public PipedOutputStream getOutputStream() {
return out;
}
public void run() {
String strInfo = new String("hello,receiver!");
try {
out.write(strInfo.getBytes());
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Receiver extends Thread {
private PipedInputStream in = new PipedInputStream();
public PipedInputStream getInputStream() {
return in;
}
public void run() {
String strInfo = new String("hello,receiver!");
byte[] buf = new byte[1024];
try {
int len = in.read(buf);
System.out.println("the following message comes from sender:\n" + new String(buf, 0, len));
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
class PipedStreamTest {
public static void main(String[] args) throws Exception {
Sender t1 = new Sender();
Receiver t2 = new Receiver();
PipedOutputStream out = t1.getOutputStream();
PipedInputStream in = t2.getInputStream();
out.connect(in);
t1.start();
t2.start();
}
}
注:数据流中不存在字符串的IO操作,那样要用reader和writer
二者的桥梁在inputStreamReader/outputStreamWriter
bufferedWriter/bufferedReader
bufferedInputStream/bufferedOutputStream
示例代码:
public static void main(String[] args) throws Exception
{
FileOutputStream fos=new FileOutputStream("count.txt");
BufferedOutputStream bos=new BufferedOutputStream(fos);
DataOutputStream dos=new DataOutputStream(bos);
dos.writeUTF("ab中国");
dos.writeBytes("ab中国");
dos.writeChars("ab中国");
dos.close();
FileInputStream fis=new FileInputStream("count.txt");
BufferedInputStream bis=new BufferedInputStream(fis);
DataInputStream dis=new DataInputStream(bis);
System.out.println(dis.readUTF());
byte[] buf=new byte[1024];
int len=dis.read(buf);
System.out.println(new String(buf,0,len));
fis.close();
}
来提高IO访问速度的
高级IO操作
信道IO java.nio.channels
java流的处理上分为
字符流 处理单元为2个字节的unicode字符,操作字符\字符数组\字符串
Reader
CharArrayReader()
StringArrayReader()
FileReader()
Writer
CharArrayWriter()
StringWriter()
FileWriter()
PipedWriter()
字节流 处理一个字节,操作字节和字节数组
inputStream
ByteArrayInputStream() 创建一个字节数组输入流
StringBufferInputStream() 把一个String 作为一个inputStream
FileInputStream() 把一个文件作为一个inputStream,实现文件读取
PipInputStream() 创建一个输入流管道
SequenceInputStream() 序列输入流,把多个inputStream合并
outputStream
ByteArrayOutputStream() 把信息存入内存中的一个缓冲区
FileOutputStream ()
PipedOutputStream() 通讯管道的发送端
两种不同导向的stream之间的转换
把一个字节为导向的stream转换为一个以字符为导向的stream
java IO的一般使用原则
1 按数据来源(去向)分类
是文件: fileInputStream, fileOutputStream, fileReader, fileWriter
是byte[]: byteArrayInputStream/byteArrayOutputStream
是char[]: charArrayReader/charArrayWriter
是String stringBufferInputStream/StringBufferOutputStream
StringReader/StringWriter
网络数据流: inputStream/outputStream reader writer
2 按是否格式化输出分:
printStream /printWriter
3 按是否要缓冲分:
bufferedInputStream/bufferedOutputStream
bufferedReader/burreredWriter
4 按数据格式分
发表评论
-
thread local 学习笔记
2012-11-08 15:45 596thread local(thread 的局部变量)解决多 ... -
mina 学习笔记一
2012-11-05 16:33 597mina下载路径 http://mina.apache.or ... -
多线程学习笔记一
2012-09-04 11:03 629/** * 子线程循环10次,主线程100次 如此 ... -
多线程学习笔记二
2012-09-04 11:05 600/** * 传统线程 * * @time 下午06:15 ... -
多线程学习笔记三
2012-09-04 11:06 584/** * 两个线程进行数据交换 * * @time 上 ... -
多线程学习笔记四
2012-09-04 11:08 632/** * 线程范围内的数据共享 * * 应用场景:减少 ... -
java swing 学习笔记一(画板Panel )
2012-09-04 11:18 1021/** * 画板 * * @time 3:38:10 P ... -
java swing学习笔记二(画布Canvas)
2012-09-04 11:19 3203/** * 画布 * @time 11:23:53 AM ... -
java 类装载器
2012-09-08 18:12 658public class ClassLoaderTest { ... -
并发库学习笔记一
2012-09-28 16:37 613新建线程并启动的几种 ... -
并发库学习笔记二
2012-09-28 16:38 431阻塞队列(生产者和消费者开发模式) 三种常用的阻塞队 Ar ... -
并发库学习笔记三
2012-09-28 16:40 567Synchronized是lock的一种简化实现,一个l ... -
并发库学习笔记四
2012-09-28 16:42 635ConcurrentHashMap并没有实现Lock-Free ... -
并发库学习笔记五
2012-09-28 16:43 696并发流程控制CountDown ... -
java IO流学习笔记二
2012-10-03 00:24 593/** * * * 目录分隔符用\\或/ * * @ ... -
jdk5.0的特性
2012-10-03 00:28 6081静态导入 导入指定类 ... -
java IO流学习笔记三
2012-10-04 23:39 672转换流 inputStreamReader 字节转字符 o ...
相关推荐
java IO流学习笔记
NULL 博文链接:https://lpf.iteye.com/blog/1471932
Java IO学习笔记+代码,全面介绍IO中的方法、类,很适合初学者
io流学习笔记,主要适合入门的人士学习及观看
java学习笔记1(java io/nio)设计模式
文档是关于JAVA常用IO流的学习笔记,可以用于参考,学习。
java IO流学习笔记——(1) IO流总述 • 输入流:数据源到程序(InputStream、Reader读进来) • 输出流:程序到目的地(OutputStream、Writer写出去) 流分类 : • 节点流:可以直接从数据源或目的地读写数据 • 处理...
自己总结的java中IO流的笔记,绘制了详细的思维导图,每个思维导图中均有详细的博文解释,方便大家学习和理解,免费分享给大家。适合java的爱好者和学习者
收集的java李兴华老师的课件笔记。感觉还不错,适合回顾和新手补习。
这是关于java各个IO流,从节点流到装饰缓冲流的一系列笔记纲要,帮助更好的理解和学习java的IO流
java IO流学习笔记——(2)文件字符流&字节数组流 文件字符流FileReader&FileWriter FileReader :通过字符的方式读取文件,仅适合字符文件 FileWriter :通过字节的方式写出或追加数据到文件中,仅适合字符文件 部分...
本文档为本人学习 java IO流期间的学习总结笔记,希望对新学习的朋友有所帮助和参考价值。本人java 开发时间不是太长,可能存在不完善或不对之处,欢迎指正!
目录java IO流学习笔记——(3)字节缓冲流&字符缓冲流&转换流&数据流字节缓冲流 —BufferedInputStream&BufferedOutputStream字符缓冲流—BufferedReader&BufferedWriter转换流—InputStreamReader&...
自己总结,知识点全面,包含了,IO流,异常机制等学习笔记 含有代码实例可供参考,需要mybase打开 持续更新,需要的自行下载 附上本人写的学习博客 https://blog.csdn.net/qq_35577787/article/details/105088073
《Java JDK6学习笔记》是作者良葛格本人近几年来学习Java的心得笔记,结构按照作者的学习脉络依次展开,从什么是Java、如何配置Java开发环境、基本的Java语法到程序流程控制、管理类文件、异常处理、枚举类型、泛型...
java学习笔记大全:java内容介绍 java编程可以分成三个方向: 1、java se (j2se)桌面开发 java中的基础中的基础 2、java ee (j2ee)web开发 3、java me (j2me)手机开发 java se课程介绍 java面向对象编程(基础) java...
详细介绍了IO的用法,基本实现原理,并介绍了序列化与反序列化的实现方法。谢谢