I/O————字节流
InputStream字节输入流
OutputStream字节输出流
用于以字节的形式读取和写入数据
下面是使用
字节输入流读取文件
字节输出流写入文件
文件可能不存在,所以使用try catch
public class StreamTest {
public static void main(String[] args) {
//准备一个文件文件内容是LOL,用来 字节输入流读取文件
File file1 = new File("D:\\lolfilder\\lol.exe\\lol.txt");
//准备一个空文件,用来字节输出流写入文件
File file2 = new File("D:\\lolfilder\\lol.exe\\lol1.txt");
try {
FileInputStream fis = new FileInputStream(file1);
FileOutputStream fos = new FileOutputStream(file2);
byte[] all = new byte[(int) file1.length()];
byte[] all2 = {65,97};
fis.read(all);
fos.write(all2);
for(byte temp:all) {
System.out.println(temp);
}
fis.close();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
运行结果是:"LOL"的ASCII码值

空文件lol1.txt写入了 Aa
拆分文件与合并文件
拆分文件
将文件按照指定大小分割成多个文件,并且新文件的命名规则为 filename_no.txt
主要使用了FileInputStream中的read方法

public class FileSplitTest {
private static final int SPLIT_SIZE=100;
public static void main(String[] args) {
File file = new File("D:\\lolfilder\\lol.exe\\filesplitdemo.txt");
splitFile(file, SPLIT_SIZE);
}
public static void splitFile(File file,int size) {
try/*(FileInputStream fis = new FileInputStream(file);)
可以将流定义在try中,当try,catch或finally结束后会自动关闭流,这是jdk7之后的技术
*/ {
FileInputStream fis = new FileInputStream(file);
byte []fisb = new byte[size];
//fis.read(fisb);
for(int i=1;fis.read(fisb, 0, size)>0;i++) {
File subFile = new File(file.getAbsolutePath().replace(".txt", "_" + i + ".txt"));
FileOutputStream fos = new FileOutputStream(subFile);
fos.write(fisb);
fos.close();
}
fis.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
合并文件
public static void main(String[] args) {
int i = 1;
//建立输入文件
File outFile = new File("D:\\lolfilder\\lol.exe\\mergedfile.txt");
try {
//建立输出流
FileOutputStream fos = new FileOutputStream(outFile);
//通过i依次读取
while(new File("D:\\lolfilder\\lol.exe\\filesplitdemo_"+i+".txt").exists()) {
File f = new File("D:\\lolfilder\\lol.exe\\filesplitdemo_"+i+".txt");
FileInputStream fis = new FileInputStream(f);
byte[] temp = new byte[fis.available()];
fis.read(temp);
fos.write(temp);
i++;
fis.close();
}
fos.close();
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
I/O————字节流的更多相关文章
- java 字节流与字符流的区别
字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作 ...
- 字节流VS缓冲流
---恢复内容开始--- 字节流VS缓冲流 java.io包中的类大致可以分为:InputStream.OutputStream.Reader.Writer.InputStream/Reader可以理 ...
- java IO输入输出流中的各种字节流,字符流类
字节流字节流主要是操作byte类型数据,也byte数组为准,主要操作类就是·字节输出流:OutputStream·字节输入流:InputStream字符流在程序中一个字符等于2个字节,那么java提供 ...
- Java字节流和字符流区别
1.字节流:直接操作文件本身. 2.字符流:通过缓冲区来操作文件. 所有的文件在硬盘或在传输时都是以字节的方式进行的,包括图片等都是按字节的方式存储的,而字符是只有在内存中才会形成,所以在开发中,字节 ...
- 字节流与数据类型的相互转换---使用struct模块
字节流与数据类型的相互转换---使用struct模块 http://blog.csdn.net/Sunboy_2050/article/details/5974029 Python是一门非常简洁的语言 ...
- java IO流 之 字节流
一.file类的常用操作 File file=new File("E:\\test\\javaIo"); System.out.println(file.isDirectory() ...
- [Java IO]02_字节流
概要 字节流有两个核心抽象类:InputStream 和 OutputStream.所有的字节流类都继承自这两个抽象类. InputStream 负责输入,OutputStream 负责输出. 字节流 ...
- Java IO之字节流
Java中的输入是指从数据源等读到Java程序中,这里的数据源可以是文件,内存或网络连接,输出则是指从Java程序中写到目的地. 输入输出流可以分为以下几种类型(暂时不考虑File类) 类名 中文名 ...
- (转)java字节流和字符流的区别
转载: http://www.cnblogs.com/dolphin0520/category/361055.html 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同 ...
- 处理 pcap 中的 mac 二进制字节流为可读格式
import struct # 利用 struct 处理字节流中的mac地址 适用于小端地址操作系统 def mac2str(bi_mac): mac = "" for i in ...
随机推荐
- Python:递归
递归两个基本要素: (1) 边界条件:确定递归到何时终止,也称为递归出口. (n = 1)(2) 递归模式:大问题是如何分解为小问题的,也称为递归体.(n*(n-1)! n>1) 例:累加 ...
- MongoDB复制集成员及架构介绍(一)
MongoDB复制集介绍 MongoDB支持在多个机器中通过异步复制达到提供了冗余,增加了数据的可用性.MongoDB有两种类型的复制,第一种是同于MySQL的主从复制模式(MongoDB已不再推荐此 ...
- 移植最新版libmemcached到VC++的艰苦历程和经验总结(下)
结果如何呢?我的VC++测试用例还是不能调用该接口的接口方法,只是这次的报错方式有所改变,提示是每个C/C++程序员最不愿意看到的“内存地址访问违规”,这一次我确实被郁闷了,这是为什么呢? 五.gcc ...
- ubuntu16.04 + cuda9.0(deb版)+Cudnn7.1
https://blog.csdn.net/Umi_you/article/details/80268983
- java mysql编码问题
今天使用jdbc连接数据库,sql语句明明是正确的,可就是查不到数据,问题是编码问题,好大的坑啊!!! 我的问题:where语句带汉字找不到信息,如果是英文却可以 第一步:在url后面加上如下的utf ...
- Android调试之TraceView
TraceView 在应用运行时,可以使用Debug类打开操作日志记录功能,打开后Android会详细记录应用花在每个线程以及线程的每个函数的调用时间.操作日志记录完毕后,可以使用Android SD ...
- 【eclipse插件开发实战】Eclipse插件开发3——OSGi、RCP
Eclipse插件开发实战3--OSGi.RCP 一.OSGi 1. 什么是OSGi框架 OSGi(Open Service Gateway Initiative)框架是运行在JavaVM环境里的服务 ...
- java的环境变量classpath中加点号 ‘.’ 的作用
java的环境变量classpath中加点号 ‘.’ 的作用 “.”表示当前目录,就是编译或者执行程序时,你的.class文件所在的目录: 当找.class文件时,先去“.”路径下找,找不到的话,在去 ...
- 继承映射关系 joinedsubclass的查询
会出现下面这样的错一般是配置文件中的mapping和映射文件中的package路径或者class中的name路径不一致 org.hibernate.MappingException: Unknown ...
- java web 学习-网络资源
[网络收集] 1. JavaWeb学习总结——JSP中的九个内置对象 2. Jsp九大内置对象以及四个作用域 他人学习汇总资源 1. http://www.cnblogs.com/xdp-gacl/t ...