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————字节流的更多相关文章

  1. java 字节流与字符流的区别

    字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作 ...

  2. 字节流VS缓冲流

    ---恢复内容开始--- 字节流VS缓冲流 java.io包中的类大致可以分为:InputStream.OutputStream.Reader.Writer.InputStream/Reader可以理 ...

  3. java IO输入输出流中的各种字节流,字符流类

    字节流字节流主要是操作byte类型数据,也byte数组为准,主要操作类就是·字节输出流:OutputStream·字节输入流:InputStream字符流在程序中一个字符等于2个字节,那么java提供 ...

  4. Java字节流和字符流区别

    1.字节流:直接操作文件本身. 2.字符流:通过缓冲区来操作文件. 所有的文件在硬盘或在传输时都是以字节的方式进行的,包括图片等都是按字节的方式存储的,而字符是只有在内存中才会形成,所以在开发中,字节 ...

  5. 字节流与数据类型的相互转换---使用struct模块

    字节流与数据类型的相互转换---使用struct模块 http://blog.csdn.net/Sunboy_2050/article/details/5974029 Python是一门非常简洁的语言 ...

  6. java IO流 之 字节流

    一.file类的常用操作 File file=new File("E:\\test\\javaIo"); System.out.println(file.isDirectory() ...

  7. [Java IO]02_字节流

    概要 字节流有两个核心抽象类:InputStream 和 OutputStream.所有的字节流类都继承自这两个抽象类. InputStream 负责输入,OutputStream 负责输出. 字节流 ...

  8. Java IO之字节流

    Java中的输入是指从数据源等读到Java程序中,这里的数据源可以是文件,内存或网络连接,输出则是指从Java程序中写到目的地. 输入输出流可以分为以下几种类型(暂时不考虑File类) 类名 中文名 ...

  9. (转)java字节流和字符流的区别

    转载: http://www.cnblogs.com/dolphin0520/category/361055.html 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同 ...

  10. 处理 pcap 中的 mac 二进制字节流为可读格式

    import struct # 利用 struct 处理字节流中的mac地址 适用于小端地址操作系统 def mac2str(bi_mac): mac = "" for i in ...

随机推荐

  1. python print 字体颜色

    例子: print '\033[35;43m(1)ip转换成数字\033[0m' \033[35;43m    ===>35列属于字颜色,43列属于背景颜色 字背景颜色范围: 40--49  4 ...

  2. C++之虚函数与虚继承详解

    准备工作 1.VS2012使用命令行选项查看对象的内存布局 微软的Visual Studio提供给用户显示C++对象在内存中的布局的选项:/d1reportSingleClassLayout.使用方法 ...

  3. OCX控件避免弹出安全警告的类

    1.要加一个头文件:         #include <objsafe.h>2.在控件头文件中加入: 1 DECLARE_INTERFACE_MAP()2 BEGIN_INTERFACE ...

  4. 12306.cn网站自动登录器源代码

    去年过年放假的时候写了一个12306.cn网站的自动登录器,刚好那时候放假了,所以没把源代码放出来,现在将代码发出来,由于编写得比较仓促(从放假的下午19:00左右到晚上到00:00左右),很多细节问 ...

  5. Linux串口通信中一种接收不到数据的问题的解决

    转载来源:嵌入式系统之初学者点滴 (百度空间) 原文 在这篇文章()中,实现了Linux环境下的串口读写操作,程序也运行成功了.但是再进一步测试时发现,如果开机之后直接如上文中所说,分别运行读程序和写 ...

  6. Ubuntu无法访问Windows磁盘, 且无提示信息

    现象描述, 双系统Ubuntu和Windows, 进入Ubuntu后无法访问Windows盘内容, 且图标闪烁无任何错误信息提示. 1.安装ntfsfix sudo apt-get install n ...

  7. SublimeLinter js和css的语法检查

    JavaScript 语法检查 SublimeLinter-jshint 是基于 nodeJS 下的 jshint 的插件,实际上 SublimeLinter-jshint 调用了 nodeJS 中 ...

  8. VR视频原理

    VR视频,这里指的是沉浸式全景视频,基本场景是观影者戴上显示头盔(如cardboard),在其中通过头部的转动可以看到全景视频的每个方向的图像.同时也能听到来自各个方向的声音,声音也会随着头部的转动而 ...

  9. SqlServer2012——快照

    1.数据库快照 优点: 维护历史数据以生成报表.由于数据库快照可提供数据库的静态视图,因而可以通过快照访问特定时间点的数据. 将查询实施在数据库的快照上,可以释放主体数据库上的资源. 数据库快照的限制 ...

  10. C# web 总结

    (1)Cshtml 中 “@” 符号转义 在 cshtml 中需要使用 “@” 符号,如 “@幸福摩天轮版权所有”.那么我们需要使用转义,使用 “@@” 就好!“© ”和 “@” 好像呀. <t ...