FileInputStream类和FileOutputStream类中,第一个类的源端和第二个类的目的端都是磁盘文件,它们的构造方法允许通过文件的路径名来构造相应的流。例如:

FileInputSteam infile=new FileInputStream("myfile.dat");

FileOutputStream outfile=new FileOutputStream("results.dat");

构造FileOutputStream对象时,对应的文件必须存在并且可读的,而构造FileOutputStream对象时,如输出文件已存在,则必须是可覆盖的。

1:FileOutputStream 类

如果用户的文件读取需求比较简单,那么用户可以使用FileInputStream类,该类是从InputStream类中派生出来的简单的输入类,该类的所有方法都是从InputStream类继承来的,使用文件输入流读取文件。

示例代码如下:

importjava.io.FileInputStream;
importjava.io.IOException;

public class ReadFileDemo {
public static void main(String []args){
try{
//创建文件的输入流对象
FileInputStream in=new FileInputStream("TestFile.txt");
Int n=512;//设定读取的字节数
Byte buffer[]=new byte[n];//读取输入流
//读取n个字节,放置到以下标0开始字节数组bffer中,返回值实际读取的字节的数量
while((in.read(buffer,0,n)!=-1)&&(n>0)){
System.out.print(new String(buffer));
}
System.out.println();
in.close();//关闭流
}
catch(IOExceptionioe){
System.out.println(ioe);
}
catch(Exceptione){
System.out.println(e);
}
}
}

本例以FileInputStream的read(buffer)方法,每次从源文件TestFile.txt中读取512B,存储在缓冲区buffer中,再将以buffer中的值构造的字符串newString(buffer)显示在屏幕上。使用文件输入流构造器建立通往文件的输入流时,可能会出现错误(也被称为异常,如要打开的文件可能不存在)。当出现I/O错误时,java生成一个出错信号,它使用一个IOException对象来表示这个出错信号。程序必须使用一个try-catch块检测并处理这个异常。

2:FileOutputStream类

FileOutputStream提供了基本文件写入能力。除了从OutputStream类继承来的方法外,FileOutputStream类还有以下两个构造器:

FileOutputStream(Stringname).

FileOutputStream(Filefile).

第一个构造器使用给定的文件名name创建一个FileOutputStream对象。第二个构造器使用File创建FileOutputStream对象。该类可以使用write方法把字节发送给输出流。使用文件输出写入文件。

示例代码如下:

import java.io.FileOutputStream;
import java.io.IOException;

public class WriteFileDemo {
try{
System.out.print("文件要输入的内容");
Int count,n=512;
byte[ ] buffer=new byte[n];//定义存放读入信息的字节数组
count=System.in.read(buffer);//读取标准输入流
//创建文件输出流对象
FileOutputStream os=new FileOutputStream("WriteFile.txt");
//把字节数组buffer中的下标0开始,长度为count的字节写入流中
os.writer(buffer,0,count);
os.close();
System.out.println("已保存到WriterFile.txt!");
}
catch(IOExceptionioe){ //捕获IOExpection异常
System.out.println("ioe"); //输出异常信息
}
catch(Exceptione){
System.out.println(e);



}

}

}

用System.in.read(buffer)从键盘输入一行字符,存储在缓冲区中的buffer中,再以FileOutputStream的write(buffer)方法,将buffer中的内容写到文件WriteFile.txt中。这个程序中使用”System.on.read(buffer);“语句时,程序会暂停,等待用户输入内容。用户输入的内容会保存在字节数组buffer中,并返回读入的内容的长度保存到变量count中。因为对文件的读/写有可能发生I/O异常,所以在程序中要处理IOException异常,编译并运行此程序,在同一目录下会提示输入要保存文件的内容。输入一段话,按回车键确认,这时会在目录中生成一个名叫WriterFile.txt的文本文件。打开这个文本文件,会看到刚刚输入的那段话。

字节流与字符流(FileInputStream类和FileOutputStream类)的更多相关文章

  1. JAVA IO分析一:File类、字节流、字符流、字节字符转换流

    因为工作事宜,又有一段时间没有写博客了,趁着今天不是很忙开始IO之路:IO往往是我们忽略但是却又非常重要的部分,在这个讲究人机交互体验的年代,IO问题渐渐成了核心问题. 一.File类 在讲解File ...

  2. IO流(File类,IO流的分类,字节流和字符流,转换流,缓冲流,对象序列化)

    1.File类 File类可以在程序中 操作文件和目录.File类是通过建立File类对象,在调用File类的对象来进行相关操作的. 示例: public class Demo01 { public  ...

  3. 关于Java的File类、字节流和字符流

    一.File类: 在Windows下的路径分隔符(\)和在Linux下的路径分隔符(/)是不一样的,当直接使用绝对路径时,跨平台会报No Such file or diretory异常. File中还 ...

  4. 牛客网Java刷题知识点之输入流、输出流、字节流、字符流、字节流的抽象基类(InputStream、OutputStream)、字符流的抽象基类(Reader、Writer)、FileWriter、FileReader

    不多说,直接上干货! IO流用来处理设备之间的数据传输. java对数据的操作是通过流的方式. java用于操作流的对象都在IO包中. IO流按操作数据分为两种:字节流和字符流. IO流按流向分为:输 ...

  5. JavaSE学习笔记(14)---File类和IO流(字节流和字符流)

    JavaSE学习笔记(14)---File类和IO流(字节流和字符流) File类 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 构造方 ...

  6. 01 语言基础+高级:1-8 File类与IO流_day09【字节流、字符流】

    day09[字节流.字符流] 主要内容 IO流 字节流 字符流 异常处理 Properties 教学目标 能够说出IO流的分类和功能 能够使用字节输出流写出数据到文件 能够使用字节输入流读取数据到程序 ...

  7. java-I/O File类(5)-Reader和Writer、OutputStreamWriter 、BufferedWriter、字节流和字符流的区别

      标签: outputstreamwriterreader字符file方法 2015-05-14 23:06 469人阅读 评论(0) 收藏 举报  分类: 孙鑫-java基础(16)  I-O(4 ...

  8. java IO输入输出流中的各种字节流,字符流类

    字节流字节流主要是操作byte类型数据,也byte数组为准,主要操作类就是·字节输出流:OutputStream·字节输入流:InputStream字符流在程序中一个字符等于2个字节,那么java提供 ...

  9. 字节流和字符流(InputStream类和OutputStream类)

    java流包括字节流和字符流,字节流通过I/O设备以字节数据的方式读入,而字符流则是通过字节流读入数据转换成字符"流"的形式由用户驱使. InputStream是所有字节输入流的父 ...

随机推荐

  1. Android 解压缩功能

    主要用到zip: import java.util.Enumeration; import java.util.zip.CRC32; import java.util.zip.CheckedOutpu ...

  2. Codeforces Round #250 (Div. 2) C、The Child and Toy

    注意此题,每一个部分都有一个能量值v[i],他移除第i部分所需的能量是v[f[1]]+v[f[2]]+...+v[f[k]],其中f[1],f[2],...,f[k]是与i直接相连(且还未被移除)的部 ...

  3. git 放弃本地某个文件的修改,或所有修改

    18:57 2015/11/17git 放弃本地某个文件的修改,或所有修改git checkout 文件名git checkout // 放弃所有文件的所有修改git reset --hard 版本号 ...

  4. Android -- 自定义ProgressBar图片

    注:所有的进度条都要配置 android:indeterminate="false"        android:indeterminateDrawable="样式文件 ...

  5. HBase1.0以上版本的API改变

    HBase1.0以上版本已经废弃了 HTableInterface,HTable,HBaseAdmin等API的使用,新增了一些API来实现之前的功能: Connectioninterface: Co ...

  6. SQL 联合索引 与 单一列的索引 比较

    背景: 公司业务迅速扩展,很多网站.接口都因为大流量的数据,发生服务器习惯性死机:一条sql查询语句只能适用于一定的网络环境,没有优化的查询当遇上大数据时就不适用了. 本文主旨: 讨论什么情况下能利用 ...

  7. js判断微信浏览器

    function is_weixin(){ //检查是否是微信浏览器 var ua = navigator.userAgent.toLowerCase(); if(ua.match(/MicroMes ...

  8. ado.net 连接,删除,添加

    ado.net数据库访问技术将数据库中的数据,提取到内存中,展示给用户看还可以将内存中的数据写入数据库中去 并不是唯一的数据库访问技术,但是它是最底层的数据库访问技术 数据库: create data ...

  9. android-对话框

    一.常用对话框 AlertDialog: 功能最丰富,实际应用最广的对话框(以下三种对话框都是该对话框的子类) ProgressDialog:进度对话框.这个对话框只是对进度条的包装 DatePick ...

  10. JAVA递归算法

    1.什么是递归算法 递归算法就是直接或间接调用自己的算法 2.问题1:一列数的规则如下: 1.1.2.3.5.8.13.21.34 ,求第30位数是多少?使用递归实现 public class Fib ...