java io流操作_【Java基础】IO流操作

一、IO流概念: 输入输出流,也就是可以用来读写数据,以及上传下载数据。

二、分类:

1、从流的对象来分:   1)高端流:所有程序或者内存中的流都称为高端流。

2)低端流:所有外界设备中的流都是低端流。

如何区分到底是高端流还是低端流:

一般来说流的对象的后缀包含reader或者writer一般都是高端流,否则是低端流。(除了PrintStream,PrintStream也是高端流)

2、从数据的流向来分:   1)输入流:从外界设备-->程序,也就是读数据的动作。

2)输出流:从程序-->外界设备,也就是写数据的动作。

3、从数据的格式来分:   1)字节流:是用来处理声音或者图片等等二进制信息的流。

2)字符流:用来处理字符数据的流。

4、从流的对象是否需要包装来分:   1)原始流:流在实例化过程中,不需要通过另外一个流来包装自己的流。

2)包装流:流在实例化过程中,需要通过另外一个流来包装自己的流。

原始流都是低端流,包装流都是高端流。

三、常用IO流:

1、文件操作

字节流:

1)FileOutputStream

2)FileInputStream

字符流:

3)FileWriter

4)FileReader

区别:

(1)字节流的操作是直接与文件本身关联,不使用缓冲区;

(2)字符流的操作是通过缓冲区与文件关联。

一般都使用字节流,中文操作采用字符流。

2、内存操作流(多用于Java web)

5)ByteArrayOutputStream 内存向程序输出

6)ByteArrayInputStream   程序向内存输入

package io.demo;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

public class ByteArrayDemo {

public static void main(String[] args) {

String str = "Hello World";

ByteArrayInputStream bis = new ByteArrayInputStream(str.getBytes()); // 内存输入流,将str输入保存在内存中

ByteArrayOutputStream bos = new ByteArrayOutputStream(); // 内存输出流,内容输出

int temp = 0;

while ((temp = bis.read()) != -1) {

bos.write((char) temp);

}

System.out.println(bos.toString());// bos.toString()取出内存输出内容

}

}

3、BufferReader:缓冲区读取

package io.demo;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStreamReader;

public class BufferReaderIODemo {

public static void main(String[] args) {

//输出c:\demo.txt文件的内容

File file = new File("C:" + File.separator + "demo.txt");

if (file.exists())

try {

InputStreamReader isr = new InputStreamReader(

new FileInputStream(file));

BufferedReader buf = new BufferedReader(isr);

while (true ) {

String str=buf.readLine();

if(null ==str){

break;

}

System. out.println(str);

}

buf.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

4、java提供两个类用于字节-字符流的转换

7)InputStreamReader:将字节的输入转换为字符流

8)OutputStreamWriter:将字符的输出流转换为字节流的输出

5、对象序列化:Serializable

9)ObjectOutputStream:对象序列化

10)ObjectInputStream:对象反序列化

首先需要实现序列化的对象必须实现 java.io.Serializable接口。

package io.demo;

import java.io.Serializable;

//Person類要實現 Serializable接口

public class Person implements Serializable {

private static final long serialVersionUID = 1L;

public Person(String name, int age) {

this.age = age;

this.name = name;

}

@Override

public String toString() {

return this .name + ":" + this.age ;

}

private String name;

private int age ;

}

package io.demo;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

public class ObjIODemo {

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

File file = new File("c:" + File.separator + "demo.txt");

if (!file.exists()) {

try {

file.createNewFile();

} catch (IOException e) {

e.printStackTrace();

}

}

// 輸出流,以對象的形式寫入文件c:\demo.txt

ObjectOutputStream objo = null;

try {

objo = new ObjectOutputStream(new FileOutputStream(file));

objo.writeObject( new Person("諸葛亮" , 22));

objo.writeObject( new Person("魯樹" , 23));

objo.writeObject( new Person("孔明" , 25));

objo.writeObject( new Person("valiate" , 26));

objo.close();

} catch (Exception e) {

e.printStackTrace();

}

// 從c:\demo.txt以對象的形式讀出

ObjectInputStream obji = null;

try {

obji = new ObjectInputStream(new FileInputStream(file));

while (true ) {

Person per = (Person) obji.readObject();

if (null == per)

break;

System. out.print(per + " " );

per = (Person) obji.readObject();

}

obji.close();

} catch (Exception e) {

// 讀到文件結束符EOF會拋出EOFException異常,屏蔽異常信息輸出

// e.printStackTrace();

}

}

}

//諸葛亮:22 魯樹:23 孔明:25 valiate:26

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java xmpp openfire_XMPP协议学习笔记三(Openfire服务器端搭建开发环境)

在了解了XMPP的基本结构和一些概念之后,我们暂时告别枯燥的理论学习,来动手搭建一下OpenfireSpark的开发环境,实际感受一下搭建整套IM通讯系统的过程。开发环境:windows XP sp3,Eclipse3.6.1,jdk1.6.0_24&a…

快速排序 java导包_排序算法-快速排序(Java实现)

上篇我们讲了冒泡排序,这次我们讲它的升级版快速排序,“快速”,一看就是个好算法~快速排序(QuickSort)是啥?我们先看下百度百科的介绍快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1962年提出。它的基本…

java怎么判断一个char是汉字_JAVA中判断char是否是中文的几种方法

展开全部对照最新版本的 Unicode (最少是62616964757a686964616fe59b9ee7ad9431333335343330 6.0 版本,不知道现在是否有 7.0) 里面找从哪个 code point 数字开始到哪个数字结束的是常用中文汉字,另外冷僻汉字肯定不是用单个 char 能表示的,…

java接口经常变动前端怎么办_Java进程故障排查(CPU资源占用高,接口响应超时,功能接口停滞等)...

故障分析# 导致系统不可用情况(频率较大):1)代码中某个位置读取数据量较大,导致系统内存耗尽,进而出现Full GC次数过多,系统缓慢;2)代码中有比较消耗CPU的操作,导致CPU过高,系统运行缓慢&#x…

使用java实现面向对象编程第二章_java面向对象编程——第二章 java基础语法

第二章java基础语法1、java关键字abstractbooleanbreakbytecasecatchcharclassconstcontinuedefaultdodoubleelseextendsassertfinalfinallyfloatforgotoifimplementsimportinstanceofintinterfacelongnativenewstrictfppackageprivateprotectedpublicreturnshortstaticsupersw…

mysql 二维数组下标_php二维数组指定下标排序

/** Effect 排序* author YangYunHao* email 1126420614qq.com* time 2018-11-26 11:59:38* parameter arr:排序数组,key:按什么排,type:升序降序* */function arraySort($arr,$key,$typeasc){$keyArr []; // 初始化存放数组将要排序的字段值foreach ($arr as $k>$v){$keyA…

用java实现楼层导航_JS实现网站楼层导航效果代码实例

壹 ❀ 引言对于楼层导航而言,还有个重要的功能就是,随着滚动条滚动,达到某层时得同步点亮楼层导航的小图片。由于我前面也说了不打算使用JQ,所以想着用JS去实现它,实现并不难,主要得弄清滚动满足怎样的条件…

费尔马小定理素数java_利用费马小定理判断素数

今天听了ljss神犇的数论课,顿时感觉————我真的是太弱啦!我只能稍微写一下我能听懂的部分orz那么这就是今天我为数不多能听懂一点的之一......QAQ首先先介绍今天的主角:费马小定理————转自维基百科没看懂的话我稍微解释一下&#xff0…

java读取一段缓存音频文件夹_java实现酷狗音乐临时缓存文件转换为MP3文件的方法...

本文实例讲述了java实现酷狗音乐临时缓存文件转换为MP3文件的方法。分享给大家供大家参考,具体如下:酷狗临时缓存文件,其实已经是吧MP3文件下载好了,只是名字看上去好像是通过md5算法重命名的。酷狗在缓存文件的时候会同时缓存歌词…

java aspectj_AspectJ基本用法

AOP虽然是方法论,但就好像OOP中的Java一样,一些先行者也开发了一套语言来支持AOP。目前用得比较火的就是AspectJ了,它是一种几乎和Java完全一样的语言,而且完全兼容Java(AspectJ应该就是一种扩展Java,但它不是像Groovy…

php连接数据库返回数据类型,php从数据库读取数据,并以json格式返回数据的方法...

php中,从数据库读取数据,并以json格式返回数据。具体方法如下:第一步,定义相关变量$servername "localhost";$username "root";$password "root";$mysqlname "datatest";$json ;$da…

php json to object,PHP JSON_FORCE_OBJECT函数实现强转对象

JSON_FORCE_OBJECT在多级数组中,JSON_FORCE_OBJECT会将所有嵌套数值数组编码为对象。如果你只关注第一级数组(例如,使其适合作为MySQL JSON列),那么可以将第一级数组强制转换为对象,例如:$ json json_encode((object)…

php推送示例wordpress,给WordPress的编辑后台添加提示框的代码实例分享

WordPress 3.5 新添加了一个提示框功能,可以创建一个提示框,然后指向任何元素,比如下边的例子:本文就来教你怎么创建一个这样的提示框。首先需要添加提示框的脚本,这样才能使用提示框的 JS 方法。//挂载提示框脚本func…

php 去除标签内样式,PHP去除html标签,php标记及css样式代码参考

语法: string strip_tags(string str);传回值: 字串函式种类: 资料处理解析:本函式可去掉字串中包含的任何 HTML 及 PHP 的标记字串。若是字串的 HTML 及 PHP 标签原来就有错,例如少了大于的符号,则也会传回错误。而本函式和 fgetss() 有着相…

jmeter php网站,jmeter实战之phpwind随机回帖/发帖

关键词:jmeter phpwind 性能测试一、性能需求1)性能需求:30min内,phpwind随机回帖/发帖,观察服务器性能的表现。2)需求分析:2.1 核心业务论坛系统的核心业务主要是登录、看帖、发帖、回帖,业务建模时应考虑…

restful api php,RestfulAPI · ThinkPHP6.0接口开发与应用及uniapp快速入门(更新完毕) · 看云...

# Restful API>[success]Restful API是目前Web API 设计中比较流行的一种设计风格。## Restful API>[info]RESTful是一种软件架构风格、设计风格,而**不是**标准,只是提供了一组设计原则和约束条件。>[danger]对于这种风格,ThinkPHP…

php 向服务器发放请求,PHP客户端向服务器端发送请求并向远程服务器发送服务器端请求...

我的方案如下:>单击按钮时,客户端将向服务器端发送请求>一旦服务器端收到请求,它将向远程服务器发送另一个请求以获得结果>一旦响应到来,服务器端应该回应客户端的响应.客户$.post(login_server.php{act:"post",phone:phone,passwords:passwords…

php检查在线用户,php – 检查用户是否在线laravel

我有列last_activity,其中写入日期最后一个活动用户使用中间件.我如何检查在线用户以及何时注销?中间件:class LastActivityUser{/*** Handle an incoming request.** param \Illuminate\Http\Request $request* param \Closure $next* return mixed*/pu…

java 写文件缓存,java泛型实现文件缓存

package joyport.hbase;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.util.HashMap;/*** 文件缓存读写** author xiepengjoyport.com*/public class…

java方法重载的意义,java方法重载

class ChongZai{public void a(int a);public void a(Strting a);public void a(int a,int b);}如上就是一个重载了 而重载要满足一下条件:1.必须是同一个类2.方法名(也可以叫函数)一样3.参数类型不一样或参数数量不一样重载的作用:还是以上面的例子ChongZai cz new…