实例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)字节流--FileOutputStream
原文:http://www.cnblogs.com/qlwang/p/5613183.html