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. Android Dalvik虚拟机

    虽然Android平台使用Java来开发应用程序,但Android程序却不是运行在标准Java虚拟机上的. 可能是出于效率和版权的考虑,Google为Android专门设计了一套虚拟机Dalvik V ...

  2. AndroidManifest中的Intent-filter标签

    经过测试,intent-filter标签中的: 1. <action android:name="android.intent.action.MAIN" /> 代表这是 ...

  3. P2647 最大收益

    题目描述 现在你面前有n个物品,编号分别为1,2,3,……,n.你可以在这当中任意选择任意多个物品.其中第i个物品有两个属性Wi和Ri,当你选择了第i个物品后,你就可以获得Wi的收益:但是,你选择该物 ...

  4. codevs 3012 线段覆盖4

    传送门 3012 线段覆盖 4  时间限制: 1 s  空间限制: 64000 KB  题目等级 : 黄金 Gold   题目描述 Description 数轴上有n条线段,线段的两端都是整数坐标,坐 ...

  5. 一个表格中选定的tr,显示在另一个表格中

    一.先获得表格A每点中行的下标index(); 二.申明一个数组,把下表全部push到数组中: 三.在用for循环遍历数组,同时申明html代码片段: 四.用html+=表格A tr:eq(arr[i ...

  6. flask logger

    Flask uses standard Python logging. All Flask-related messages are logged under the 'flask' logger n ...

  7. PHP mysql_fetch_array与mysql_fetch_row的区别

    如果你的表里面有字段a,b,c那么你用mysql_fetch_row() 就返回array(1=>a的值,2=>b的值,3=>c的值)这个时候你读数组的话,只能这样写$array[1 ...

  8. CSS:CSS 网络安全字体组合

    ylbtech-CSS:CSS 网络安全字体组合 1.返回顶部 1. 常用的字体组合 font-family 属性应该使用若干种字体名称作为回退系统,以确保浏览器/操作系统之间的最大兼容性.如果浏览器 ...

  9. 如何给容器服务的Docker增加数据盘

    如何给容器服务的Docker增加数据盘 摘要: 我们知道Docker的数据是通过联合文件系统的方式存储到磁盘上,当需要在机器上运行的容器或者镜像的数量不断增加时,有可能磁盘的大小不再满足需求,这个时候 ...

  10. silverlight RadGridView 动态添加数据列

    public void BindFaultGridInfo(IList<HealthStatusApp.Web.Models.FaultMajorModel> list) { rg_Fau ...