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. Vue.js style(内联样式)

    Vue.js style(内联样式) 我们可以在 v-bind:style 直接设置样式: <div id="app"> <div v-bind:style=&q ...

  2. 洛谷 P3803 多项式乘法(FFT) —— FFT

    题目:https://www.luogu.org/problemnew/show/P3803 终于学了FFT了! 参考博客:https://www.cnblogs.com/zwfymqz/p/8244 ...

  3. Java中的双重检查(Double-Check)详解

    在 Effecitve Java 一书的第 48 条中提到了双重检查模式,并指出这种模式在 Java 中通常并不适用.该模式的结构如下所示: ? 1 2 3 4 5 6 7 8 9 10 public ...

  4. Eclipse -- 自动补齐设置和其他用法

    1:自动补齐设置:最简单的修改方式是:Windows——>Preferences——>Java-->Editor-->Content Asist,在Auto activatio ...

  5. 探究c++默认初始化

    按照c++ primer 5th第40页的描述,如果定义变量时没有指定初值,则变量被默认初始化,此时变量被赋予了“默认值”. 根据变量定义的位置,分为两种情况: 1.定义于任何函数体之外的变量被初始化 ...

  6. 使用jdk获取网页

    参考:https://www.zhihu.com/question/30626103 由于例子比较老了,现在的百度抓不到完整的页面了 import java.io.BufferedReader; im ...

  7. 【Hadoop】MapReduce笔记(三):MapReduce的Shuffle和Sort阶段详解

    一.MapReduce 总体架构 整体的Shuffle过程包含以下几个部分:Map端Shuffle.Sort阶段.Reduce端Shuffle.即是说:Shuffle 过程横跨 map 和 reduc ...

  8. mysql的权限问题SQLException: access denied for @'localhost' (using password: no)

    遇到了 SQLException: access denied for  @'localhost' (using password: no) 解决办法   grant all privileges o ...

  9. 让webStorm支持自动监听编译scss文件

    前提概要 今日,重装了两波系统,,,之前安装的各种环境都忘光了,重新又踩一次坑的感觉很不舒服,所以记录一下配置自动编译scss一路遇到的坑 一.webstrom run的时候控制台输出的错误中文提示乱 ...

  10. html实现点击图片放大功能

    话不多说,直接上代码 <html> <head> <style> .over {position: fixed; left:0; top:0; width:100% ...