一、字节流

FileOutputStream是OutputStream 的直接子类
FileInputStream也是InputStream的直接子类

二、文本文件的读写

2.1、字节输入流

Test.txt文件内容
abcdefg
package com.pb.io;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException; /*
* FileInputStreamDemo读取文件
*/
public class FileInputStreamDemo1 { public static void main(String[] args) {
//1.声明文件对象,也可以跳过此步直接在第2步中写
File f=new File("d:"+File.separator+"test"+File.separator+"test.txt");
//FileInputStream fis=new FileInputStream("d:/test/hello.txt");
try {
//2.创建FileInputStream对象并将file对象传入
FileInputStream fis=new FileInputStream(f);
//3.定义整型变量用来存放内容
int date;
//4先查看文件可以读取的字节类available()方法获取文件的字节数
System.out.println("可读取的字节数:"+fis.available());
System.out.println("=========开始读取文件==========");
//5读取文件read()方法
System.out.println("========没有转换前输出=======");
while((date=fis.read())!=-1){ //!=-1说明文件还有内容=-1时,就说明文件内容读完结束 System.out.println(date+"\t"); }
System.out.println("=======文件读取结束=========");
//关闭流
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} } }

结果:

可读取的字节数:7
=========开始读取文件==========
========没有转换前输出=======
97
98
99
100
101
102
103
=======文件读取结束=========

结果:并不是文件中的内容

修改上面的文件:

package com.pb.io;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException; /*
* FileInputStreamDemo读取文件
*/
public class FileInputStreamDemo1 { public static void main(String[] args) {
//1.声明文件对象,也可以跳过此步直接在第2步中写
File f=new File("d:"+File.separator+"test"+File.separator+"test.txt");
//FileInputStream fis=new FileInputStream("d:/test/hello.txt");
try {
//2.创建FileInputStream对象并将file对象传入
FileInputStream fis=new FileInputStream(f);
//3.定义整型变量用来存放内容
int date;
//4先查看文件可以读取的字节类available()方法获取文件的字节数
System.out.println("可读取的字节数:"+fis.available());
System.out.println("=========开始读取文件==========");
//5读取文件read()方法
System.out.println("========转换后转出=======");
while((date=fis.read())!=-1){ //!=-1说明文件还有内容=-1时,就说明文件内容读完结束
char c=(char)date;
System.out.println(c+"\t");
}
System.out.println("=======文件读取结束=========");
//6.关闭流
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} } }

结果:

可读取的字节数:7
=========开始读取文件==========
========转换后转出=======
a
b
c
d
e
f
g
=======文件读取结束=========

小结:FileInputStream

1.read()读取内容,是返回int值

2.需要转换字符

3.read()方法是单程的,

4.一定要关闭流

2.2、字节输出流

package com.pb.io;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner; public class FileOutputStreamDemo1 { public static void main(String[] args) { try {
//1.实例化FileOutputStream对象,在文件的末尾追加内容
FileOutputStream fos=new FileOutputStream("d:/test/test.txt",true);
//2.创建他写入的字符串
Scanner input=new Scanner(System.in);
System.out.println("请输入要写入文件的内容:");
String str=input.next();
//3.将内容转换为字节数组
byte[] bytes=str.getBytes();
//4.将内容写入
fos.write(bytes,0,bytes.length); //3个参数的方法,从0开始到数组结束的全部写入
System.out.println("文件写入结束!");
//5.关闭流
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }

结果:

请输入要写入文件的内容:输入e结束
好好学习,天天向上 hello java!
文件写入结束!

test.txt

abcdefg好好学习,天天向上

在进行写操作时,如果文件不存在,将自动创建这个文件,如果上面没test.txt,将会自动创建这个文件,可以试下,将文件删除再运行

三、综合使用

package pb.io.file;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner; /**
* 拷贝文件
* @author 北大青鸟
*
*/
public class CopyFile { public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int date=0;
System.out.print("请输入您要拷贝的源文件:");
String file1=input.next();
System.out.print("请输入您要拷贝的目标位置:");
String file2=input.next();
try {
FileInputStream fis = new FileInputStream(file1);
FileOutputStream fos = new FileOutputStream(file2);
while((date=fis.read())!=-1){//读取文件
  char c=(char)date;
         fos.write(c);
}
fis.close();
fos.close();
System.out.println("拷贝成功!");
} catch (FileNotFoundException e) {
System.out.println("源文件未找到!");
} catch (IOException ex) {
System.out.println(ex.toString());
}
}
}

Java从零开始学三十五(JAVA IO- 字节流)的更多相关文章

  1. Java从零开始学三十八(JAVA IO- 重定向IO)

    一.三个静态变量 java.lang.System提供了三个静态变量 System.in(默认键盘) System.out(默认显示器) System.err 二.重写向方法 System提供了三个重 ...

  2. Java从零开始学三十三四(JAVA IO-流简述)

    一.流概念(stream) File类并不能对文件内容进行读写. 读文件就是指:把文件的内中的数据读取到内存中来 写文件就是指:把内存中的数据写入到文件中去. 通过什么读写文件呢?文件流. 1.1.流 ...

  3. Java从零开始学三十六(JAVA IO- 字符流)

    一.字符流 BufferedReader:BufferedReader是从缓冲区之中读取内容,所有的输入的字节数据都将放在缓冲区之中 BufferedWriter:把一批数据写入到缓冲区,当缓冲区区的 ...

  4. Java从零开始学四十五(Socket编程基础)

    一.网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可 ...

  5. Java从零开始学三十九(对象序列化)

    一.序列化 将对象的状态存储到特定存储介质中的过程 对象序列化,就是把一个对象变为二进制的数据流的一种方法,通过对象序列化可以方便的实现对象的传输或存储.   序列化保存对象的“全景图”,构建对象的“ ...

  6. Java从零开始学三十二(正则表达式)

    一.为什么要有正则 正则表达式可以方便的对数据进行匹配,可以执行更加复杂的字符串验证.拆份.替换功能. 例如:现在要求判断一个字符串是否由数字组成,则可以有以下的两种做法: 不使用正则完成 使用正则完 ...

  7. Java从零开始学三十(String和StringBuffer类)

    一.StringBuffer连接字符操作 当一个字符串的内容需要被经常改变时就要使用StringBuffer 在StringBuffer中使用append()方法,完成字符串的连接操作   二.Str ...

  8. Java从零开始学二十五(枚举定义和简单使用)

    一.枚举 枚举是指由一组固定的常量组成的类型,表示特定的数据集合,只是在这个数据集合定义时,所有可能的值都是已知的. 枚举常量的名称建议大写. 枚举常量就是枚举的静态字段,枚举常量之间使用逗号隔开. ...

  9. Java进阶(三十五)java int与integer的区别

    Java进阶(三十五)java int与Integer的区别 前言 int与Integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而Integer是对象 ...

随机推荐

  1. Codeforces Round #350 (Div. 2) C. Cinema 水题

    C. Cinema 题目连接: http://www.codeforces.com/contest/670/problem/C Description Moscow is hosting a majo ...

  2. (转)js中的hasOwnProperty和isPrototypeOf方法

    hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象.不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员.isPrototypeOf ...

  3. 如何让浮动的元素换行??css

    当你想要做成这种布局效果的时候 紫色框里面的内容那样 它是一个列表 li元素是块级元素  默认大小是父元素ul的宽 并且换行 如果li没有背景的话那就不用管了 可是问题来了它不但有背景 而且是根据文字 ...

  4. Quartz实现动态定时任务

    一. 说明 由于最近工作要实现定时任务的执行,而且要求定时周期是不固定的,所以就用到了quartz来实现这个功能: spring3.1以下的版本必须使用quartz1.x系列,3.1以上的版本才支持q ...

  5. Bootstrap 3之美07-插件Collapse、Accordion、Modal、Tab、Tooltip、Alert、Carousel

    类似Page Header, Breadcrumbs, Dropdowns等,都是Bootstrap的组件,是静态的.如果涉及到交互,Bootstrap提供了插件.这些插件包括: ○ 过渡效果: bo ...

  6. 【转】利用HTML5开发Android

    ● Android设备多分辨率的问题 Android浏览器默认预览模式浏览 会缩小页面 WebView中则会以原始大小显示 Android浏览器和WebView默认为mdpi.hdpi相当于mdpi的 ...

  7. MAC之tar解压与压缩打包命令

    tar [-cxtzjvfpPN] 文件与目录 ....参数:-c :建立一个压缩文件的参数指令(create 的意思):-x :解开一个压缩文件的参数指令!-t :查看 tarfile 里面的文件! ...

  8. (原)用WebBrowser浏览Office Web Apps Server,除去“下载”按钮

    对,没错,如果你按关键字找到这篇随笔了,相信一定知道背景,以及我所说的是什么. 上一段子代码. private void timerHideButton_Tick(object sender, Eve ...

  9. Facebook 工程师是如何高效工作的?

    编者按:Facebook 的工程师有哪些高效工作的经验呢?软件工程师访谈了多位 Facebook 的高产工程师,总结了他们的共同经验以及晋级之路,供各位参考. 成为高效开发者这件事你可以通过经验.书本 ...

  10. 第一章 Java工具类目录

    在这一系列博客中,主要是记录在实际开发中会常用的一些Java工具类,方便后续开发中使用. 以下的目录会随着后边具体工具类的添加而改变. 浮点数精确计算 第二章 Java浮点数精确计算 crc32将任意 ...