黑马程序员——IO——字节流

------ <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.comtarget="blank">

java培训</a>、期待与您交流! ---------

——IO——字节流

使用字节流写入指定目录下的文件内容

public class FileStreams {

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

{

med1();

}

private static void med1() throws Exception

{

//

FileOutputStream  fos = new FileOutputStream("E:\\myjava.txt");

fos.write("abcdef".getBytes());

                fos.close();

}

}

读取指定的文件

第一种方式

private static void med3()throws Exception

{

// TODO Auto-generated method stub

// 读取一个文件中的内容

FileInputStream  fis = new FileInputStream("E:\\BufferDemos.txt");

int ch = 0;

              //
定义一个数组

byte[] arr=new byte[1024];

while((ch=fis.read(arr))!=-1)

{

System.out.print(new String(arr,0,ch));

}

fis.close();

}

第二种方式:

private static void med2()throws Exception

{

// 读取一个文件中的内容

FileInputStream  fis = new FileInputStream("E:\\BufferDemos.txt");

int ch = 0;

while((ch=fis.read())!=-1)

{

System.out.print((char)ch);

}

}

第三种方式

      private static void med4()throws Exception

{

//

// 读取一个文件中的内容

FileInputStream  fis = new FileInputStream("E:\\BufferDemos.txt");

int number = fis.available();

System.out.println(number);//70  获取文章内容的长度

//定义指定内存长度的数组

byte[] buf = new byte[fis.available()];

//将内容读入数组中

fis.read(buf);

//在控制台上输出内容

System.out.println(new String(buf));

}

将一个图片拷贝到指定目录下

将异常抛出处理

     private static void med5()  throws Exception

{

// 获取一个图片内容

FileInputStream fis = new FileInputStream("E:\\10.jpg");

//定义缓冲区

byte[] arr = new byte[fis.available()];

fis.read(arr);

// 拷贝到指定目录下

FileOutputStream fos = new FileOutputStream("E:\\5555.jpg");

fos.write(arr);

fis.close();

fos.close();

}

处理异常

private static void med6() {

// TODO Auto-generated method stub

// 获取一个图片内容

FileInputStream fis;

FileOutputStream fos;

try

{

fis = new FileInputStream("E:\\10.jpg");

//定义缓冲区

byte[] arr = new byte[fis.available()];

fis.read(arr);

// 拷贝到指定目录下

fos = new FileOutputStream("E:\\5555.jpg");

fos.write(arr);

}

catch(IOException e)

{

System.out.println(e.toString());

}

finally

{

try{

if(fis!=null)

fis.close();

}

catch(IOException e)

{

System.out.println("读入失败");

}

try{

if(fos!=null)

fos.close();

}

catch(IOException e)

{

System.out.println("写入失败");

}

}

}

拷贝mp3文件到指定的目录下

 import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.Arrays;

public class FileStreams {

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

{

med7();

}

private static void med7() throws Exception

{

//读入mp3数据

FileInputStream fis = new FileInputStream("E:\\梦中蝴蝶.mp3");

BufferedInputStream buis = new BufferedInputStream(fis);

//创建写入mp3数据的位置

FileOutputStream fos = new FileOutputStream("E:\\梦中蝴蝶01.mp3");

BufferedOutputStream bos = new BufferedOutputStream(fos);

//建立缓冲区

byte[] arr = new byte[1024];

int number = 0;

while((number=buis.read(arr))!=-1)

{

bos.write(arr);

}

buis.close();

bos.close();

}

读取键盘录入

System.out  对应的是标准的输出设备---控制台

System.in   对应的是标准的输入设备---键盘

import java.io.BufferedReader;

import java.io.InputStream;

import java.io.InputStreamReader;

public class Readin {

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

med2();

}

第一种方式是使用字节转换流

private static void med2() throws Exception{

// 获取键盘录入对象

InputStream in = System.in;

//将字节流对象转成字符流对象,使用转换流  InputStreamReader

InputStreamReader isr = new InputStreamReader(in);

//为了提高效率,将字符串进行缓冲区技术高效操作,使用BufferedReader

BufferedReader bufr = new BufferedReader(isr);

String line = null;

while((line = bufr.readLine())!=null)

{

if("over".equals(line))

break;

System.out.println(line.toUpperCase());

}

bufr.close();

}

第二种方式

private static void med1() throws Exception{

// 要求输入的是over 时停止录入

InputStream  in = System.in;

StringBuilder  sb = new StringBuilder();

while(true)

{

int ch =in.read();

if(ch==‘\r‘)

continue;

if(ch==‘\n‘)

{

String s = sb.toString();

if("over".equals(s))

break;

System.out.println(s.toUpperCase());

sb.delete(0, sb.length());

}

else

sb.append((char)ch);

}

in.close();

}

}

读出转换流

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

public class Readin {

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

med3();

}

private static void med3() throws Exception{

// 获取键盘录入对象

InputStream in = System.in;

//将字节流对象转成字符流对象,使用转换流  InputStreamReader

InputStreamReader isr = new InputStreamReader(in);

//为了提高效率,将字符串进行缓冲区技术高效操作,使用BufferedReader

BufferedReader bufr = new BufferedReader(isr);

OutputStream out = System.out;

OutputStreamWriter osw = new OutputStreamWriter(out);

BufferedWriter bwr = new BufferedWriter(osw);

String line = null;

while((line = bufr.readLine())!=null)

{

if("over".equals(line))

break;

bwr.write(line.toUpperCase());

bwr.newLine();

bwr.flush();

}

bufr.close();

}

将键盘录入的数据存储到指定的文件中去

 import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

public class Readin {

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

// TODO Auto-generated method stub

med4();

}

private static void med4()throws Exception {

// 键盘录入最常见的写法

BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));

//将获取的数据录入到指定文件中去

BufferedWriter bwr = 

new BufferedWriter(new  OutputStreamWriter(newFileOutputStream("E:\\out.txt")));

String line = null;

while((line = bufr.readLine())!=null)

{

if("over".equals(line))

break;

bwr.write(line.toUpperCase());

bwr.newLine();

bwr.flush();

}

将指定的文件内容输入到控制台上

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

public class Readin {

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

// TODO Auto-generated method stub

med5();

}

private static void med5()throws Exception {

// 读取文件中数据输出到控制台上

// 键盘录入最常见的写法

BufferedReader bufr = 

new BufferedReader(new InputStreamReader(new FileInputStream("E:\\IoDemos.java")));

//将获取的数据录入到指定文件中去

BufferedWriter bwr = new BufferedWriter(new OutputStreamWriter(System.out));

String line = null;

while((line = bufr.readLine())!=null)

{

if("over".equals(line))

break;

bwr.write(line.toUpperCase());

bwr.newLine();

bwr.flush();

}

}

注:流操作的基本规律

<1> 明确源和目的

            源:输入流     InputStream   Reader

            目的:         OutputStream  Writer

<2>操作的数据是否是纯文本

            是: 字符流

            不是: 字节流

<3> 当体系明确后,来确定要具体使用哪个具体的对象

<4> 只有转换流可以指定编码表

    转换流是字符与字节的桥梁  

时间: 2024-10-07 04:23:11

黑马程序员——IO——字节流的相关文章

黑马程序员——IO篇

------- android培训.java培训.期待与您交流! ---------- IO(Input Output)流 1.IO流用来处理设备之间的数据传输 2.Java对数据的操作是通过流的方式 3.Java用于操作流的对象都在IO包中 4.流按操作数据分为两种:字节流与字符流 . 字符流的数据字节流其实都能处理,因为无论什么在计算机上最后都是以字节存在的,但是其中有一部分数据它是以文本形式存在的,所以为了方便有了字符流,字符流里融合了编码表,而只有文字用到了编码表,所以字符流用来处理文本

黑马程序员------IO(五)

黑马程序员------IO(五) 1.1  操作对象(示例1)ObjectInputStream与ObjectOutputStream 被操作的对象需要实现Serializable. Serializable:用于给被序列化的类加入ID号,用于判断类和对象是否是同一个版本 类通过实现java.io.Serializable接口以启用序列化功能,Serializable只是一个标记接口. 1 示例1: 2 import java.io.*; 3 4 class ObjectStreamDemo 5

黑马程序员 IO流 文件的分割与合并

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ----------------------package cn.itcast.IO; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;

黑马程序员——IO流总结

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 什么是IO流? IO流是用来处理设备之间的数据传输 有哪些流? 流按操作数据的种类分为:字符流和字节流 流按流的方向分:输入流和输出流 字节流的基类:InputStream和OutputStream 字符流的基类:Writer和Reader 常用写字符流:FileWriter,BufferedWriter,OutputStreamWriter,PrinterWriter 常用读字符流  : F

黑马程序员-IO流其他流与File类

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 1:其他的流 1: DataOutputStream ;多了一些操作基本数据类型的功能 DataInputStream:读取文件. 用DataOutputStream流写进去的数据,就用DataInputStream流来读取. 1 imp

黑马程序员—IO(一)流概述、字符流、字节流、流操作规律

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 第一节     IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都在IO包中. 4)流按其操作数据的类型分为两种:字节流和字符流. 5)流按其流向分为:输入流和输出流. 注意:流只能操作数据,而不能操作文件. 3.IO流的常用基类: 1)字节流的抽象基流:Inp

黑马程序员——IO流概述、字符流、字节流、流操作规律(一)

第一节     IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都在IO包中. 4)流按其操作数据的类型分为两种:字节流和字符流. 5)流按其流向分为:输入流和输出流. 注意:流只能操作数据,而不能操作文件. 3.IO流的常用基类: 1)字节流的抽象基流:InputStream和OutputStream 2)字符流的抽象基流:Reader和Writer 注:此四个

黑马程序员——IO包中的其他类

IO包中的其他类: 1.打印流:提供了打印方法,可以将各种数据类型的数据原样打印     字节打印流PrintStream       构造函数可以接受的参数类型:         (1)File对象  File          (2)字符串路径 String          (3)字节输出流  OutputStream 字符打印流PrintWriter        构造函数可以接受的参数类型:           (1)File对象  File          (2)字符串路径 Str

黑马程序员——IO流

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- IO流 IO流概述 IO流用来处理设备之间的数据传输.Java对数据的操作是通过流的方式.Java用于操作流的对象都在IO包中. 流按照流向分为两种:输入流和输出流. 输入流和输出流相对于内存设备而言.将外设中的数据读取到内存中:输入.将内存的数写入到外设中:输出. 流按照操作数据分为两种:字节流和字符流. 字节流读取文字字节数据后,不直接操作而是先查指定的编码表,获取对应的文字.再对这个文字