JavaIO(03)字节流--OutputStream and InputStream
实例01:
需求:向文件中写入字符串
//public byte[] getBytes():使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中; package cn.itcast03; /*
* 将一个字节数据写入数据流:
* public abstract void write( int b)throws IOException
* 将一个byte数组写入数据流:
* public void write(byte[] b)throws IOException
* 将一个指定范围的byte数组写入数据流:
* public void write(byte[] b, int off,int len)throws IOException
* 刷新缓存区:
* public void flush()throws IOException
* 关闭数据流:
* public void close()throws IOException
*/ import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream; public class FileOutputStream01 {
public static void main(String[] args) throws IOException {
//声明File对象
File f = new File("a.txt" ); //通过子类实例化父类对象
OutputStream out = new FileOutputStream(f); //进行写操作 String s = "I love JAVA"; byte[] bytes = s.getBytes(); //将一个byte数组写入数据流:
out.write(bytes); //将一个指定范围的byte数组写入数据流:
out.write(bytes,1,5); //将一个字节数据写入数据流
out.write( 'b');
out.close();
}
} 实例02:
package cn.itcast03; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException; //追加新的内容
//public FileOutputStream(String name,boolean append)throws FileNotFoundException
//如果将append的值设置为true,则表示在文件的末尾追加内容; public class FileOutStream03 {
public static void main(String[] args) throws IOException { File file = new File("b.txt" ); FileOutputStream fos = new FileOutputStream(file,true ); String s = "Hello World";
byte[] bytes = s.getBytes();
for (int i = 0; i < bytes.length; i++) {
fos.write(bytes[i]);
}
fos.close(); } }
0 到 255 范围内的 int 字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1实例01:
package cn.itcast04;
/*
* public abstract int read()throws IOException
* public int read(byte[] b)throws IOException
*/ import java.io.File;
import java.io.FileInputStream;
import java.io.IOException; public class FileInputStreamDemo01 {
public static void main(String[] args) throws IOException {
/*
// File f = new File("G:"+File.separator+"JavaTest"+File.separator+"test01.txt ");
File f = new File("a.txt");
FileInputStream fis = new FileInputStream(f); int b;
while ((b=fis.read())!=-1) {
System.out.println((char)b);
}
fis.close();
*/
System. out.println("==============================================" );
File f = new File("a.txt" );
FileInputStream fis2 = new FileInputStream(f);
/*
//将所有内容读取到数组中
byte[] bytes =new byte[1024];
//用于记录本次读取字节的个数
fis2.read(bytes);
fis2.close();
System.out.println(new String(bytes));
出现的问题:数组长度是1024,但是读取的数组长度只有17字节,所以会有1007个无用的空间转为字符串;
修正错误如下:
*/
/*
*
byte[] bytes = new byte[1024];
int len ;
while(( len=fis2.read(bytes))!=-1)
{
String s = new String(bytes,0, len);
System.out.println(s);
}
fis2.close();
出现的问题:以上虽然指定了byte数组的范文,但是程序依然开辟了很多的无用的空间,以上的程序没有从根本上解决问题。
解决方法:使用File提供的length()方法来取得文件的大小
*/
byte[] bytes = new byte[( int)f.length()];
int len;
//如果len的值不是-1,表示文件没有读完;
while((len=fis2.read(bytes))!=-1)
{
String s = new String(bytes,0,len);
System. out.println(s);
}
fis2.close();
}
}
JavaIO(03)字节流--OutputStream and InputStream的更多相关文章
- java中outputStream与inputStream的相互转换
package com.boco.test; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; im ...
- java中如何将OutputStream转换为InputStream
在不需要文件生成的情况下,直接将输出流转换成输入流.可使用下面的三种方法: 如果你曾经使用java IO编程,你会很快碰到这种情况,某个类在OutputStream上创建数据而你需要将它发送给某个需要 ...
- [19/03/30-星期六] IO技术_四大抽象类_ 字节流( 字节输入流 InputStream 、字符输出流 OutputStream )_(含字节文件缓冲流)
一.概念及分类 InputStream(输入流)/OutputStream(输出流)是所有字节输入输出流的父类 [注]输入流和输出流的是按程序运行所在的内存的角度划分的 字节流操作的数据单元是8的字节 ...
- 字节流与字符流简单操作(OutputStream、InputStream、Writer、Reader)
操作流程 使用File类打开一个文件 通过字节流或者字符流的子类.指定输出的位置. 进行读/写操作 关闭输入/出 字节流与字符流 在java.io包中操作文件内容主要有两大类:字节流字符流.两大类分为 ...
- java:OutputStream和InputStream 输出输入流,FileOutputStream,FileInputStream写入读取流
1.在java中stream代表一种数据流(源),javaio的底层数据元,---(想像成水龙头)2.任何有能力产生数据流(源)的javaio对象就可以看作是一个InputStream对象既然它能产生 ...
- java IO文件读写例子(OutputStream,InputStream,Writer,Reader)
一,File创建文件 File file = new File("D:" + File.separator + "yi.txt"); 代码示例: package ...
- java-IO流-字节流-概述及分类、FileInputStream、FileOutputStream、available()方法、定义小数组、BufferedInputStream、BufferedOutputStream、flush和close方法的区别、流的标准处理异常代码
1.IO流概述及其分类 * 1.概念 * IO流用来处理设备之间的数据传输 * Java对数据的操作是通过流的方式 * Java用于操作流的类都在IO包中 * ...
- OutputStream和InputStream的区别 + 实现java序列化
我们所说的流,都是针对内存说的,比如为什么打印到屏幕上就是System.out.println();而从屏幕等待用户输入的却是System.in呢?因为对于内存来说,把字符串打印到屏幕上是从内存流向屏 ...
- Java使用基本字节流OutputStream的四种方式对于数据复制(文本,音视频,图像等数据)
//package 字符缓冲流bufferreaderDemo; import java.io.BufferedOutputStream; import java.io.FileInputStream ...
随机推荐
- HDU 3949 XOR(高斯消元)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3949 题意:给出一个长度为n的数列A.选出A的所有子集(除空集外)进行抑或得到2^n-1个数字,去重排 ...
- struts1,struts2,springMVC终极对比
最近做项目用到了struts2,之前一直是用struts1和springMVC.感觉到了struts2从很大程度上和这两个还是有很大区别的,所以今天搜集了些资料,给他们做一下对比. Struts1官方 ...
- 关于 Memcached 的一些使用
关于Memcached的一些用法, Memcached 在Windows下的版本费了很大劲,才找到.win32,win64都有.本来想自己build的,但是Cygwin下载包也是费老劲了,下不下来. ...
- JPA中的@MappedSuperclass
说明地址:http://docs.oracle.com/javaee/5/api/javax/persistence/MappedSuperclass.html 用来申明一个超类,继承这个类的子类映射 ...
- IE6、IE7、IE8中overflow:hidden无效问题
在做图片无缝滚动效果时遇到了这个兼容问题 div宽1000px高250px超出隐藏. 但在Firefox中正常,超出部分隐藏,但是在IE6.IE7.IE8.Sogou高速下都显示了出来.做了这么多年的 ...
- [HUD 1195] Open the Lock
Open the Lock Problem Description Now an emergent task for you is to open a password lock. The passw ...
- Jquery 模板插件 jquery.tmpl.js 的使用方法(1):基本语法,绑定,each循环,ajax获取json数据
jquery.tmpl.js 是一个模板js ,主要有2个方法 (1):$.template()方法,将一段script或者是Html编译为模板,例如 $.template('myTemplate' ...
- 【转】iOS自动布局进阶用法
原文网址:http://www.cnblogs.com/dsxniubility/p/4266581.html 本文主要介绍几个我遇到并总结的相对高级的用法(当然啦牛人会觉得这也不算什么). 简单的s ...
- table中嵌套table,如何用jquery来控制奇偶行颜色
总是要趁着自己还有记忆的时候,把该记录下来的都记录下来,着实是不敢恭维自己的记性. 相信很多时候,我们前端人员,经常会用到table里面的某个td中还嵌套着table,而这个时候还总要去弄奇偶行的颜色 ...
- 开源Jabber(XMPP) IM服务器介绍
一.摘要 这是我粗略读了一遍Jabber协议和相关技术文章后的产物,有些地方不一定准确.在文章中引用的一些代码来自www.jabber.org上的文章. 二. 什么是Jabber Jabber就 ...