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是对象 ...
随机推荐
- An ac a day,keep wa away
zoj 初学者题: 1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 1334 ...
- MVC之Global.asax解析
大家看到上面的代码了,Application_Start大家都知道这是应用程序启动入口. AreaRegistration.RegisterAllAreas是什么呢? 我们先看看微软官方的注解: 我们 ...
- Android App的签名
Andriod应用程序如果要在手机或模拟器上安装,必须要有签名! 签名的意义 为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序, 我 ...
- IIS与Asp.net
一.IIS 1.绑定 为了将特定的请求映射到相应的网站,IIS允许我们配置“绑定”.所谓“绑定”就是将一个特定的地址.端口号和HTTP主机名对应到特定的网站. IIS7添加绑定的代码如下图所示: 在I ...
- DockManager如何停靠 z
DockManager默认只能停靠在窗体上,如果想停靠在其他控件上,我们发现并没有选项可以选,可能目前大部分解决方法是新建一个用户控件文件,再在用户控件里面单独设计模块. 除了这种方法还有没有其他的呢 ...
- python测试开发django-4.获取url参数和name的作用
前言 如打开博客园按时间分类标签页[https://www.cnblogs.com/yoyoketang/archive/2018/10.html],里面是时间参数是动态的,如果我想获取里面的时间参数 ...
- 通过使用第三方开源jar包sigar.jar我们可以获得本地的信息
1.下载sigar.jar sigar官方主页 sigar-1.6.4.zip 2.按照主页上的说明解压包后将相应的文件copy到java路径.比如windows32位操作系统需要将lib中sigar ...
- 玩转storm
下载地址 http://storm.apache.org/downloads.html
- GNU GRUB
Introduction GNU GRUB is a Multiboot boot loader. It was derived from GRUB, the GRand Unified Bootlo ...
- (转载)ios的一些知识点
ios的一些知识点 一 非ARC的内存管理情况 1-autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一 段落 ...