pipedstream-50

问题描述:java里字符流 字节流和序列化的区别? 大家好,小编为大家解答一个有趣的事情的问题。很多人还不知道一个有趣的事情,现在让我们一起来看看吧!

Java中的几个关于文件流的问题.

pipedstream-50的相关图片

字节流可以序列化任何文件,包括图片音频等等,字符流只能对文字操作,比如txt文件,字节流序列化后的保存的文件时二进制文件,比如先写入一段文字,又写入一张照片,使其存储方便,且其他软件无法识别,只有按照写入的顺序序列化读取才可以识别,能够起到加密的作用。字符流生成的文件,用记事本即可看到内容。

比如你写“大家好”,字节流打开后是乱码,字符流打开则是文字,不必用序列化的方式读取即可阅读到内容。

序列化的好处就是一次可以写入一个对象,使其可以读取恢复,方便数据传输,比如服务器非即时的与客户端传递数据,现将其序列化存储,再用客户端以对象的方式读取,对于封装数据会很方便。

以上均为个人见解,希望对你有所帮助。

java 管道流的相关图片

java 管道流

至于PipedInputStream(抱歉你可能写错了)

在官方网的解释是这样的:

传送输入流应该连接到传送输出流;传送输入流会提供要写入传送输出流的所有数据字节。通常,数据由某个线程从 PipedInputStream 对象读取,并由其他线程将其写入到相应的 PipedOutputStream。不建议对这两个对象尝试使用单个线程,因为这样可能会死锁该线程。传送输入流包含一个缓冲区,可在缓冲区限定的范围内将读操作和写操作分离开。

ADPipedInputStream类与PipedOutputStream类用于在应用程序中创建管道通信.一个PipedInputStream实例对象必须和一个PipedOutputStream实例对象进行连接而产生一个通信管道.PipedOutputStream可以向管道中写入数据,PipedIntputStream可以读取PipedOutputStream向管道中写入的数据.这两个类主要用来完成线程之间的通信.一个线程的PipedInputStream对象能够从另外一个线程的PipedOutputStream对象中读取数据. 。

PipedInputStream与PipedOutputStream类的编程实例(两个线程间进行通信的实例程序)。

//Sender.java 发送者,这个线程主要用于向另一个线程发送数据。

import java.io.*;。

public class Sender extends Thread{ //表明是个线程类。

private PipedOutputStream out = new PipedOutputStream(); //发送者是要向外面写数据,所以发送者内部创建PipedOutputStream对象用于向外写数据。

public PipedOutputStream getOutputStream(){ //返回管道输出流对象。

return out;

//这是一个线程类,所以它应该覆盖Thread的run方法,run方法在线程类启动时自动运行。

public void run(){ //这里的run方法用于向PipedOutputStream中写入一串数据 。

字串2

String strInfo = new String("hello,receiver!");。

try{ //write和close方法都可能有异常出现。

out.write(StrInfo.getBytes());。

out.close();

catch(Exception e){。

e.printStackTrace();。

//Receiver.java //接收者,也是一个线程类。

import java.io.*;。

public class Receiver extends Thread{。

private PipedInputStream in = new PipedInputStream(); //接受者是要读取外面的数据,所以接受者内部创建PipedInputStream对象用于读取外面的数据。

public PipedInputStream getInputStream(){ //返回管道输入流对象。

return in;

//这是一个线程类,所以它应该覆盖Thread的run方法,run方法在线程类启动时自动运行。

public void run(){ //这里的run方法用于接收数据 。

byte[] buf = new byte[1024]; //字节数组。

try{ //read和close方法都可能有异常出现。

int len = in.read(buf); //读取数据,len表示实际读取到的内容(长度)

System.out.println("the following message comes from sender:\n" = new String(buf ,o,len) ); 。

字串8

in.close();

catch(Exception e){。

e.printStackTrace();。

//PipedStreamTest.java //启动类。

import java.io.*;。

public calss PipedStreamTest{。

public static void main(String[] args) throws Exception {。

Sender t1 = new Sender(); //创建发送者对象;。

Receiver t2 = new Receiver(); //创建接收者对象;。

PipedOutputStream out = t1.getOutputStream();。

PipedInputStream in = t2.getIntStream();。

out.connect(in); //用于连接到PipedInputStream上,与in.connect(out)等价,connect方法有异常出现的可能。

t1.start(); //启动线程。

t2.start(); //启动线程。

PipedWriter和PipedReader类,它用来处理字符文本的管道通信. 。

使用管道流类,可以实现名个/doc/">程序模块之间的松耦合通信,这样我们在/doc/">程序中就可以灵活的将多个这样的模块的输入流与输出流相联,然后以拼装成满足各种应用的/doc/">程序,而不用对模块内部进行修改.使用管道连接的模块具有强内聚弱耦合的特点,若模块被替换或被拆卸不会影响到其他的模块. 。

字串7

Java中流的分类都有哪些的相关图片

Java中流的分类都有哪些

管道流实际上就是整行的读取和写入,不用每个字节每个字节的读取和写入。

读写是两个不同的分支,通常都是分开单独使用的。

可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容。

BufferedReader bre = null;。

try {

String file = "D:/test/test.txt";。

bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流。

while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环。

System.out.println(str);//原样输出读到的内容。

};

备注一: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。

可以通过“FileOutputStream”创建文件实例,之后过“OutputStreamWriter”流的形式进行存储,举例:

OutputStreamWriter pw = null;//定义一个流。

pw = new OutputStreamWriter(new FileOutputStream(“D:/test.txt”),"GBK");//确认流的输出文件和编码格式,此过程创建了“test.txt”实例。

pw.write("我是要写入到记事本文件的内容");//将要写入文件的内容,可以多次write。

pw.close();//关闭流。

备注二:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。

Java如何把控制台上的数据显示在GUI界面的相关图片

Java如何把控制台上的数据显示在GUI界面

大致是输入\输出流

他们包括以下具体的分类

1:字节流

2:字符流

3:缓冲字节流

4:缓冲字符流

java 中的管道流是怎么用的?它与不同的输入输出流的区别在哪里?

【Listing 1:用管道流截取控制台输出】

PipedInputStream pipedIS = new PipedInputStream();。

PipedOutputStream pipedOS = new PipedOutputStream();。

try {

pipedOS.connect(pipedIS);。

catch(IOException e) {。

System.err.println("连接失败");。

System.exit(1);。

PrintStream ps = new PrintStream(pipedOS);。

System.setOut(ps);。

System.setErr(ps);。

ps对象就是你需要的了

详见 http://www.ibm.com/developerworks/cn/java/l-console/。

原文地址:http://qianchusai.com/pipedstream-50.html

adb与adbshell区别,adb和adbshell有什么区别

adb与adbshell区别,adb和adbshell有什么区别

ultraiso-60

ultraiso-60

rationalizing-40

rationalizing-40

staffer-90

staffer-90

美的接入homeassistant-90

美的接入homeassistant-90

deming-100,得名100周年纪念酒口感

deming-100,得名100周年纪念酒口感

engine-50

engine-50

卡姐up歌词翻译-40,卡姐up歌词中文翻译

卡姐up歌词翻译-40,卡姐up歌词中文翻译

快问快答问题经典,快问快答简单日常问题

快问快答问题经典,快问快答简单日常问题

before-170

before-170