`

java IO流学习笔记一

    博客分类:
  • java
阅读更多

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 按数据格式分

分享到:
评论

相关推荐

    java io流学习笔记1

    总之,Java IO流是Java编程中不可或缺的一部分,它提供了丰富的类和方法来处理各种输入输出任务。通过深入学习和理解IO流,开发者可以更好地掌握数据的读取、写入和传输,提升程序的效率和功能。同时,熟悉相关工具...

    java IO流学习笔记

    ### Java IO流学习笔记 #### 异常处理与IO流操作 在进行Java IO流的学习过程中,异常处理是非常重要的一个方面。本节将详细介绍如何在Java中处理异常,并结合具体的IO流操作进行说明。 #### 一、异常处理 在Java...

    Java 的 IO流笔记.md

    ### Java IO流学习笔记 #### 一、IO流的四大抽象类 - **InputStream/OutputStream**:字节的输入输出流的抽象类。 - 数据单位:字节(8比特,范围0-255) - **Reader/Writer**:字符的输入输出流的抽象类。 - ...

    io流的学习笔记

    io流学习笔记,主要适合入门的人士学习及观看

    Java IO学习笔记+代码

    Java IO是Java编程语言中用于输入/输出操作的重要部分,它提供了一系列的类和方法来处理数据的读写,文件的创建、删除以及流的管理等。以下是对标题和描述中涉及的知识点的详细说明: 1. **文件对象的生成**: 在...

    java学习笔记1(java io/nio)

    java学习笔记1(java io/nio)设计模式

    Java基础 学习笔记 Markdownr版

    本学习笔记主要涵盖了Java的基础知识,包括面向对象、集合、IO流、多线程、反射与动态代理以及Java 8的新特性等方面,旨在帮助初学者或有经验的开发者巩固和提升Java编程技能。 1. 面向对象(OOP):Java的核心是...

    java IO流学习笔记——(1)文件字节流

    java IO流学习笔记——(1) IO流总述 • 输入流:数据源到程序(InputStream、Reader读进来) • 输出流:程序到目的地(OutputStream、Writer写出去) 流分类 : • 节点流:可以直接从数据源或目的地读写数据 • 处理...

    javaIO流.xmind

    自己总结的java中IO流的笔记,绘制了详细的思维导图,每个思维导图中均有详细的博文解释,方便大家学习和理解,免费分享给大家。适合java的爱好者和学习者

    Java 学习笔记Java学习笔记

    Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。...Java学习笔记涵盖了这些核心知识点,通过深入学习和实践,你可以逐步掌握Java编程,并应用于实际项目开发中。

    Java学习笔记之IO流

    ### Java学习笔记之IO流 #### 一、IO流概述 在Java中,IO流是用于处理输入输出操作的一种机制,主要包括输入流(Input Stream)和输出流(Output Stream)两大类。通过这些流,我们可以实现对文件的操作,如读取、写入...

    IO流学习总结

    本文档为本人学习 java IO流期间的学习总结笔记,希望对新学习的朋友有所帮助和参考价值。本人java 开发时间不是太长,可能存在不完善或不对之处,欢迎指正!

    java学习笔记markdown

    【Java学习笔记Markdown版】是针对Java初学者和进阶者的一份详尽教程,以Markdown格式编写,便于阅读和整理。Markdown是一种轻量级的标记语言,它允许用户使用易读易写的纯文本格式编写文档,然后转换成结构化的HTML...

    Java-IO流基础例题 & 例题源码 & PPT教学文档(黑马程序员详细版).rar

    Java IO流是Java编程语言中一个非常重要的概念,它提供了数据传输的能力,使得程序能够读取和写入数据到各种输入/输出设备,如硬盘、内存、网络等。本资源包含的是Java-IO流的基础例题、源码及PPT教学文档,适合初学...

    Java入门学习笔记

    "Java入门第二季学习笔记"可能深入到更复杂的主题,如异常处理、集合框架、IO流和线程。异常处理是Java中处理错误的重要机制,使得程序更加健壮。集合框架包括ArrayList、LinkedList、HashSet、HashMap等数据结构,...

    Java学习笔记——良葛格

    "Java学习笔记——良葛格"是一份专为初学者设计的教程资料,由良葛格精心编写,旨在帮助读者掌握JDK5.0版本的Java基础知识。JDK(Java Development Kit)是Java开发的核心工具集,包含了编译器、调试器和运行环境等...

Global site tag (gtag.js) - Google Analytics