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 print 字体颜色
例子: print '\033[35;43m(1)ip转换成数字\033[0m' \033[35;43m ===>35列属于字颜色,43列属于背景颜色 字背景颜色范围: 40--49 4 ...
- C++之虚函数与虚继承详解
准备工作 1.VS2012使用命令行选项查看对象的内存布局 微软的Visual Studio提供给用户显示C++对象在内存中的布局的选项:/d1reportSingleClassLayout.使用方法 ...
- OCX控件避免弹出安全警告的类
1.要加一个头文件: #include <objsafe.h>2.在控件头文件中加入: 1 DECLARE_INTERFACE_MAP()2 BEGIN_INTERFACE ...
- 12306.cn网站自动登录器源代码
去年过年放假的时候写了一个12306.cn网站的自动登录器,刚好那时候放假了,所以没把源代码放出来,现在将代码发出来,由于编写得比较仓促(从放假的下午19:00左右到晚上到00:00左右),很多细节问 ...
- Linux串口通信中一种接收不到数据的问题的解决
转载来源:嵌入式系统之初学者点滴 (百度空间) 原文 在这篇文章()中,实现了Linux环境下的串口读写操作,程序也运行成功了.但是再进一步测试时发现,如果开机之后直接如上文中所说,分别运行读程序和写 ...
- Ubuntu无法访问Windows磁盘, 且无提示信息
现象描述, 双系统Ubuntu和Windows, 进入Ubuntu后无法访问Windows盘内容, 且图标闪烁无任何错误信息提示. 1.安装ntfsfix sudo apt-get install n ...
- SublimeLinter js和css的语法检查
JavaScript 语法检查 SublimeLinter-jshint 是基于 nodeJS 下的 jshint 的插件,实际上 SublimeLinter-jshint 调用了 nodeJS 中 ...
- VR视频原理
VR视频,这里指的是沉浸式全景视频,基本场景是观影者戴上显示头盔(如cardboard),在其中通过头部的转动可以看到全景视频的每个方向的图像.同时也能听到来自各个方向的声音,声音也会随着头部的转动而 ...
- SqlServer2012——快照
1.数据库快照 优点: 维护历史数据以生成报表.由于数据库快照可提供数据库的静态视图,因而可以通过快照访问特定时间点的数据. 将查询实施在数据库的快照上,可以释放主体数据库上的资源. 数据库快照的限制 ...
- C# web 总结
(1)Cshtml 中 “@” 符号转义 在 cshtml 中需要使用 “@” 符号,如 “@幸福摩天轮版权所有”.那么我们需要使用转义,使用 “@@” 就好!“© ”和 “@” 好像呀. <t ...