博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字节流例子
阅读量:4315 次
发布时间:2019-06-06

本文共 3428 字,大约阅读时间需要 11 分钟。

【例子1】向文件中写入字符串

/** * 字节流 * 向文件中写入字符串 * */import java.io.*;class hello{    public static void main(String[] args) throws IOException { String fileName="D:"+File.separator+"hello.txt"; File f=new File(fileName); OutputStream out =new FileOutputStream(f); String str="你好"; byte[] b=str.getBytes(); out.write(b); out.close(); } }

查看hello.txt会看到“你好”。

当然也可以一个字节一个字节的写。

/** * 字节流 * 向文件中一个字节一个字节的写入字符串 * */import java.io.*;class hello{    public static void main(String[] args) throws IOException { String fileName="D:"+File.separator+"hello.txt"; File f=new File(fileName); OutputStream out =new FileOutputStream(f); String str="你好"; byte[] b=str.getBytes(); for (int i = 0; i < b.length; i++) { out.write(b[i]); } out.close(); } }

结果还是:“你好”

【例子2】向文件中追加新内容

/** * 字节流 * 向文件中追加新内容: * */import java.io.*;class hello{    public static void main(String[] args) throws IOException { String fileName="D:"+File.separator+"hello.txt"; File f=new File(fileName); OutputStream out =new FileOutputStream(f,true); String str="Rollen"; //String str="\r\nRollen"; 可以换行 byte[] b=str.getBytes(); for (int i = 0; i < b.length; i++) { out.write(b[i]); } out.close(); } }

【运行结果】:

你好Rollen

【例子3】读取文件内容

/** * 字节流 * 读文件内容 * */import java.io.*;class hello{    public static void main(String[] args) throws IOException { String fileName="D:"+File.separator+"hello.txt"; File f=new File(fileName); InputStream in=new FileInputStream(f); byte[] b=new byte[1024]; in.read(b); in.close(); System.out.println(new String(b)); } }

【运行结果】:

你好RollenRollen_

但是这个例子读取出来会有大量的空格,我们可以利用in.read(b);的返回值来设计程序。如下:

/** * 字节流 * 读文件内容 * */import java.io.*;class hello{    public static void main(String[] args) throws IOException { String fileName="D:"+File.separator+"hello.txt"; File f=new File(fileName); InputStream in=new FileInputStream(f); byte[] b=new byte[1024]; int len=in.read(b); in.close(); System.out.println("读入长度为:"+len); System.out.println(new String(b,0,len)); } }

【运行结果】:

读入长度为:18你好RollenRollen

读者观察上面的例子可以看出,我们预先申请了一个指定大小的空间,但是有时候这个空间可能太小,有时候可能太大,我们需要准确的大小,这样节省空间,那么我们可以这样干:

/** * 字节流 * 读文件内容,节省空间 * */import java.io.*;class hello{    public static void main(String[] args) throws IOException { String fileName="D:"+File.separator+"hello.txt"; File f=new File(fileName); InputStream in=new FileInputStream(f); byte[] b=new byte[(int)f.length()]; in.read(b); System.out.println("文件长度为:"+f.length()); in.close(); System.out.println(new String(b)); } }

【运行结果】:

文件长度为:18你好RollenRollen

【例子4】将上面的例子改为一个一个读

/** * 字节流 * 读文件内容,节省空间 * */import java.io.*;class hello{    public static void main(String[] args) throws IOException { String fileName="D:"+File.separator+"hello.txt"; File f=new File(fileName); InputStream in=new FileInputStream(f); byte[] b=new byte[(int)f.length()]; for (int i = 0; i < b.length; i++) { b[i]=(byte)in.read(); } in.close(); System.out.println(new String(b)); } }

输出的结果和上面的一样。

【例子3】上面的几个例子都是在知道文件的内容多大,然后才展开的,有时候我们不知道文件有多大,这种情况下,我们需要判断是否独到文件的末尾。

/** * 字节流 *读文件 * */import java.io.*;class hello{    public static void main(String[] args) throws IOException { String fileName="D:"+File.separator+"hello.txt"; File f=new File(fileName); InputStream in=new FileInputStream(f); byte[] b=new byte[1024]; int count =0; int temp=0; while((temp=in.read())!=(-1)){ b[count++]=(byte)temp; } in.close(); System.out.println(new String(b)); } }

【运行结果】:

你好RollenRollen_

提醒一下,当读到文件末尾的时候会返回-1.正常情况下是不会返回-1的。

转载于:https://www.cnblogs.com/yuyu666/p/9733611.html

你可能感兴趣的文章
iOS 关于Xcode上的Other linker flags
查看>>
.NET中的程序集(Assembly)
查看>>
第17章:MongoDB-聚合操作--聚合管道--$group
查看>>
Oracle 中wmsys.wm_concat拼接字符串,结果过长报错解决
查看>>
angularjs基础——控制器
查看>>
前端设计师如何提高UI界面中的阅读性
查看>>
APP版本号记录
查看>>
母函数
查看>>
最长不重复子串
查看>>
POJ 3621
查看>>
PHP ajax实现数组返回
查看>>
java web 自定义filter
查看>>
J.U.C Atomic(二)基本类型原子操作
查看>>
POJ---2945 Find the Clones[字典树-简单题(多例输入注意删除)]
查看>>
[Luogu4550] 收集邮票
查看>>
Python-循环
查看>>
(转)最大子序列和问题 看着貌似不错
查看>>
thinkphp3.2 链接数据库测试
查看>>
项目的上线流程是怎样的?
查看>>
Linux通配符
查看>>