10.3-全栈Java笔记:常用流详解(一)

 文件字节流

FileInputStream通过字节的方式读取文件,适合读取所有类型文件(图像、视频、文本文件等)。Java也提供了FileReader专门读取文本文件。

FileOutputStream 通过字节的方式写数据到文件,适合所有类型文件。Java也提供了FileWriter专门写入文本文件。

【示例1】将文件内容读取到程序中 


import java.io.*;

public class Demo02 {

public static void main(String[] args) {

FileInputStream  fis =null;

try {

fis = new    FileInputStream("d:/a.txt");  //内容是:abc

StringBuilder sb = new StringBuilder();

int temp = 0;

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

sb.append((char)temp);

}

System.out.println(sb);

catch (Exception e) {

e.printStackTrace();

}finally{

try{

if(fis!=null){

fis.close();

//流对象,使用完后必须关闭!!这种写法,保证了即使遇到异常情况,也会关闭流对象。

}

}catch(IOException e){

e.printStackTrace();

}

}

}

}

【示例2将字符串/字节数组的内容写入到文件中


public class Demo03 {

public static void main(String[] args) {

FileOutputStream fos = null;

String string = "北京尚学堂欢迎您!";

try {

fos = new FileOutputStream("d:/a.txt",true);

//true表示内容会追加到文件末尾;false表示重写整个文件内容。

fos.write(string.getBytes());

catch (Exception e) {

e.printStackTrace();

}finally{

try {

if(fos!=null){

fos.close();

}

catch (IOException e) {

e.printStackTrace();

}

}

}

}

【示例3】利用文件流实现文件的复制功能


public class Demo04 {

public static void main(String[] args) {

copyFile("d:/a.txt", "d:/b.txt"); //将a.txt内容拷贝到b.txt

}

/**

* 将src文件的内容拷贝到dec文件

@param src    源文件

@param dec    目标文件

*/

static void copyFile(String src, String dec) {

FileInputStream fis = null;

FileOutputStream fos = null;

byte[] buffer = new byte[1024]; // 为了提高效率,设置缓存数组!

int temp = 0;

try {

fis = new FileInputStream(src);

fos = new FileOutputStream(dec);

while ((temp = fis.read(buffer)) != -1) {

fos.write(buffer, 0, temp);

}

catch (Exception e) {

e.printStackTrace();

finally {

try {

if(fos!=null){

fos.close();

}

catch (IOException e) {

e.printStackTrace();

}

try {

if(fis!=null){

fis.close();

}

catch (IOException e) {

e.printStackTrace();

}

}

}

}

字节数组流

ByteArrayInutStream和ByteArrayOutputStream经常用在需要流和数组之间转化的情况!

说白了,FileInputStream是把文件当做数据源。ByteArrayInputStream则是把内存中的”某个数组对象”当做数据源。

【示例4简单测试ByteArrayInputStream 的使用


public class Demo05 {

public static void main(String[] args) {

byte[] b = "abcdefg".getBytes();

test(b);

}

public static void test(byte[] b){

ByteArrayInputStream bais = null;

StringBuilder sb = new StringBuilder();

int temp = 0;

int num = 0;  //用于保存读取字节数

try {

bais = new ByteArrayInputStream(b);

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

sb.append((char)temp);

num++;

}

System.out.println(sb);

System.out.println("读取的字节数:"+num);

}finally{

try {

if(bais!=null){

bais.close();

}

catch (IOException e) {

e.printStackTrace();

}

}

}

}

本节我们先讲到这里,下节我们继续……



「全栈Java笔记」是一部能帮大家从零到一成长为全栈Java工程师系列笔记。笔者江湖人称 Mr. G,10年Java研发经验,曾在神州数码、航天院某所研发中心从事软件设计及研发工作,从小白逐渐做到工程师、高级工程师、架构师。精通Java平台软件开发,精通JAVAEE,熟悉各种流行开发框架。

  笔记包含从浅入深的六大部分:

A-Java入门阶段

B-数据库从入门到精通

C-手刃移动前端和Web前端

D-J2EE从了解到实战

E-Java高级框架精解

F-Linux和Hadoop

时间: 2024-10-07 21:38:28

10.3-全栈Java笔记:常用流详解(一)的相关文章

10.4-全栈Java笔记:常用流详解(二)

上节我们讲到「Java中常用流:文件字节流和字节数组流」,本节我们继续走起~  缓冲流 BufferedInputStream和BufferedOutputStream这两个流是处理流,通过内部缓存数组来提高操作流的效率. [示例1]使用缓冲流实现文件的高效率复制操作 public class Demo06 { public static void main(String[] args) { new Demo06().copyFile("d:/a.txt", "d:/b.tx

10.6-全栈Java笔记:常见流详解(四)

上节我们讲到「Java中常用流:数据流和对象流」,本节我们学习文件字符流和文件缓冲流~ 文件字符流 前面介绍的文件字节流可以处理所有的文件,但是字节流不能很好的处理Unicode字符,经常会出现"乱码"现象.所以,我们处理文本文件,一般可以使用文件字符流,它以字符为单位进行操作. [示例1]使用FileReader与FileWriter实现文本文件的copy package com.bjsxt.io; import java.io.*; /** * 测试文件字符流 * @author 

10.5-全栈Java笔记:常见流详解(三)

上节我们讲到「Java中常用流:缓冲流」,本节我们学习数据流和对象流~ 数据流 数据流将"基本数据类型变量"作为数据源,从而允许程序以与机器无关方式从底层输入输出流中操作java基本数据类型. DataInputStream和DataOutputStream提供了可以存取与机器无关的所有Java基础类型数据(如:int,double 等)的方法. [示例1]DataInputStream和DataOutputStream的使用 package com.bjsxt.io; import 

10.7-全栈Java笔记:常见流详解(五)

本节我们学习「常见流中的最后两项:转换流和随意访问文件流」~ 转换流 InputStreamReader/OutputStreamWriter用来实现将字节流转化成字符流.比如,如下场景: System.in是字节流对象, new BufferedReader(须接受Reader对象).我们就能将System.in转换成Reader对象,即可完成此场景. [示例1]使用InputStreamReader接受用户的输入 BufferedReader bReader= null; try { Sys

Java之IO流详解

IO流 Input/Output 完成输入/输出 应用程序运行时——数据在内存中  ←→ 把数据写入硬盘(磁带)  内存中的数据不可持久保存的  输入:从外部存储器(硬盘.磁带.U盘)把数据读入内存. 输出:从内存中把数据写入外部存储区(硬盘.磁带.U盘)中,这样就可以保证:即使程序退出了,数据依然不会丢失. File — 代表磁盘上的文件或目录. ●  listRoots() :列出磁盘上所有的根目录 ● exists:判断是否存在 ● mkdir:创建目录 ● listFiles():列出当

java I/O流详解

概况 I/O流主要分为二大类别:字符流和字节流. 字节流(基本流) 1.字节输入流    类名:FileInputStream    特点:读(对文件进行读取操作)    父类:InputStream 2.字节输出流    类名:FileOutputStream 特点:写 (对文件进行写入操作)    父类:OutputStream 字符流(基本流) 1.字符输入流    类名:FileReader   特点:读(对文件进行读取操作)     父类:InputStreamReader 2.字符输

Java笔记:字符串详解

更新时间:2018-1-6 21:20:39 更多请查看在线文集:http://android.52fhy.com/java/index.html String 字符串创建 String str1="ABC";//推荐使用 String str2 = new String("ABC"); 第一种更省空间.对于字符串比较,如果直接使用==是判断地址是否相同,判断值是否相同需要使用String.equals()方法. 对于字符串:其对象的引用都是存储在栈中的,如果是编译

Java I/O流详解与应用(二)

I/O流(二) 一.缓冲流(缓冲区): 特点:本身没有读写的能力,需要借助普通的读写流进行读写,但可以加快读写的效率 分类:字符缓冲流:BufferedReader(读),BufferedWriter(写) 字节缓冲流:BufferedInputStream(读),BufferedOutputStream(写) 字符缓冲流代码实现文件读写: public class Test { public static void main(String[] args) throws IOException

Python全栈之路--Django ORM详解

ORM:(在django中,根据代码中的类自动生成数据库的表也叫--code first) ORM:Object Relational Mapping(关系对象映射) 我们写的类表示数据库中的表 我们根据这个类创建的对象是数据库表里的一行数据 obj.id  obj.name.....就是数据库一行数据中的一部分数据 ORM--First: 我们在学习django中的orm的时候,我们可以把一对多,多对多,分为正向和反向查找两种方式. class UserType(models.Model):