Java从零开始学三十五(JAVA IO- 字节流)
一、字节流
二、文本文件的读写
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- 字节流)的更多相关文章
- Java从零开始学三十八(JAVA IO- 重定向IO)
一.三个静态变量 java.lang.System提供了三个静态变量 System.in(默认键盘) System.out(默认显示器) System.err 二.重写向方法 System提供了三个重 ...
- Java从零开始学三十三四(JAVA IO-流简述)
一.流概念(stream) File类并不能对文件内容进行读写. 读文件就是指:把文件的内中的数据读取到内存中来 写文件就是指:把内存中的数据写入到文件中去. 通过什么读写文件呢?文件流. 1.1.流 ...
- Java从零开始学三十六(JAVA IO- 字符流)
一.字符流 BufferedReader:BufferedReader是从缓冲区之中读取内容,所有的输入的字节数据都将放在缓冲区之中 BufferedWriter:把一批数据写入到缓冲区,当缓冲区区的 ...
- Java从零开始学四十五(Socket编程基础)
一.网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可 ...
- Java从零开始学三十九(对象序列化)
一.序列化 将对象的状态存储到特定存储介质中的过程 对象序列化,就是把一个对象变为二进制的数据流的一种方法,通过对象序列化可以方便的实现对象的传输或存储. 序列化保存对象的“全景图”,构建对象的“ ...
- Java从零开始学三十二(正则表达式)
一.为什么要有正则 正则表达式可以方便的对数据进行匹配,可以执行更加复杂的字符串验证.拆份.替换功能. 例如:现在要求判断一个字符串是否由数字组成,则可以有以下的两种做法: 不使用正则完成 使用正则完 ...
- Java从零开始学三十(String和StringBuffer类)
一.StringBuffer连接字符操作 当一个字符串的内容需要被经常改变时就要使用StringBuffer 在StringBuffer中使用append()方法,完成字符串的连接操作 二.Str ...
- Java从零开始学二十五(枚举定义和简单使用)
一.枚举 枚举是指由一组固定的常量组成的类型,表示特定的数据集合,只是在这个数据集合定义时,所有可能的值都是已知的. 枚举常量的名称建议大写. 枚举常量就是枚举的静态字段,枚举常量之间使用逗号隔开. ...
- Java进阶(三十五)java int与integer的区别
Java进阶(三十五)java int与Integer的区别 前言 int与Integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而Integer是对象 ...
随机推荐
- faceNet编译问题
1.执行align_dataset_mtcnn.py出现无法导入检测模型的问题 a.现象如下 Creating networks and loading parameters Traceback (m ...
- webpack vuejs 和 vue-router 如何使用?
读本文之前,建议对webpack和vuejs有初步的了解,通过webpack的官网和vuejs的中文官网了解即可 网站主要目录://某些文件不一定全部罗列出来,注意观察 vue-wepack -src ...
- 你的C/C++程序为什么无法运行?揭秘Segmentation fault (2)
什么让你对C/C++如此恐惧? 本篇将继续上一篇来讨论段错误(Segmentation fault). 上一篇: 你的C/C++程序为什么无法运行?揭秘Segmentation fault(1) 追溯 ...
- LINUX 性能工具使用
http://xuclv.blog.51cto.com/5503169/1184517
- [c#]WebClient异步下载文件并显示进度
摘要 在项目开发中经常会用到下载文件,这里使用winform实现了一个带进度条的例子. 一个例子 using System; using System.Collections.Generic; usi ...
- java基础学习总结——对象转型
一.对象转型介绍 对象转型分为两种:一种叫向上转型(父类对象的引用或者叫基类对象的引用指向子类对象,这就是向上转型),另一种叫向下转型.转型的意思是:如把float类型转成int类型,把double类 ...
- Save a 32-bit Bitmap as 1-bit .bmp file in C#
What is the easiest way to convert and save a 32-bit Bitmap to a 1-bit (black/white) .bmp file in C# ...
- 【转载】C#堆和栈的区别
原文出处 理解堆与栈对于理解.NET中的内存管理.垃圾回收.错误和异常.调试与日志有很大的帮助.垃圾回收的机制使程序员从复杂的内存管理中解脱出来,虽然绝大多数的C#程序并不需要程序员手动管理内存,但这 ...
- fundamentals5
PROTOBUF的DELPHI开源框架fundamentals5 GITHUB: https://github.com/fundamentalslib/fundamentals5 # Fundamen ...
- IE中Ext的comboBox跑到页面左上角
{ xtype:'combo', width:100, //id:'exTypeCom', name:'exType', hiddenName:'exType', displayField:'text ...