您的位置:首页 > 编程语言 > Java开发

Java输入输出流2

2015-12-23 17:10 627 查看
输入流demo:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class InputStreamDemo1 {

public static void main(String[] args) throws Exception {
/*
InputStream的子类
java.io
类 FileInputStream
构造方法摘要
FileInputStream(File file) 指定读取数据的路径(File)
FileInputStream(String name) 指定读取数据的路径(String)
*/

//FileInputStream(File file) 指定读取数据的路径(File)
String  path="E:"+File.separator+"mytest.txt";
//创建文件对象
File  file=new File(path);
FileInputStream  in=new FileInputStream(file);
//读取数据
//int read(byte[] b) 从此输入流中将最多 b.length 个字节的数据读入一个字节数组中。
//byte[] b----存储读取来的数据
//int的返回值----读取数据的字节总数。
//创建字节数组来存储读取来的数据

//		byte  data[]=new byte[100];
//		int  len=in.read(data);
// void close() 关闭此文件输入流并释放与此流有关的所有系统资源。
//		in.close();
//System.out.println(data);错误
//将字节数组转换成String
//		String  info1=new String(data);
//		System.out.println(len);
//		System.out.println(info1);
//hello,大家好!*********************************************
//我们的字节数组有100个字节,但是实际保存数据的只有14个字节,所以就会有86个字节是空的。
//上面的这个现象怎么排除
//1.String str.trim();
//2.就是将字节数组中的数据转换成String的时候
//		String  info2=new String(data,0,len);
//		System.out.println(info2);
//上述的做法只是将有数据的部分转化,没有数据的部分依然存在(内存浪费)

/*
//3我们创建数组的时候就指定数组的大小为文件的大小
byte  data[]=new byte[(int)file.length()];
int  len=in.read(data);
in.close();
String  info1=new String(data);
System.out.println(len);
System.out.println(info1);
*/

/*//int read(byte[] b, int off, int len) 从此输入流中将最多 len 个字节的数据读入一个字节数组中。
//byte[] b----保存读取数据的字节数组
//int off-----将读取到得数据保存到数组中起始位置
//int len-----读取的字节个数
byte  data[]=new byte[(int)file.length()];
int  len=in.read(data,5,5);
in.close();
System.out.println(len);
String  info1=new String(data);
System.out.println(info1);*/

/*
//int read() 从此输入流中读取一个数据字节。
//int的返回值就是读取到得数据  如果已到达文件末尾,则返回 -1。
int  temp=in.read();
char  data=(char)temp;
System.out.println(data);*/

/*
//循环读取一段数据
char  charray[]=new char[(char)file.length()];
int  len=0;
while(in.read()!=-1){
int  temp=in.read();
char  ch=(char)temp;
charray[len]=ch;
len++;
}
in.close();
String  str=new String(charray);
System.out.println(str);
*/

//定义一个int的变量,保存读取来的数据
int  temp=0;
//定义一个int的变量,循环增量
int  len=0;
//定义一个字节数组---保存读取来的数据
byte  data[]=new byte[(int)file.length()];
//循环读取
while((temp=in.read())!=-1){
data[len]=(byte)temp;
len++;
}
in.close();
String  str=new String(data);
System.out.println(str);
}

}

输出流demo:

import java.io.File;
import java.io.FileOutputStream;
import java.util.Scanner;

public class OutputStreamDemo1 {

public static void main(String[] args) throws Exception {
// OutputStream 字节输出流【抽象类】
// FileOutputStream
/*
* FileOutputStream(File file) 指明数据的输出路径(File)
* FileOutputStream(File file, boolean append) 指明数据的输出路径,是否允许覆盖原数据
* FileOutputStream(String name) 指明数据的输出路径(String)
* FileOutputStream(String name, boolean append)指明数据的输出路径(String),是否允许覆盖原数据
*/

// FileOutputStream(File file) 指明数据的输出路径(File)

// 创建一个文件输出路径
// D:/mytest.txt
String path = "E:" + File.separator + "mytest.txt";
// 创建一个File对象
File file1 = new File(path);
// 创建字节输出流的对象
//FileOutputStream out1=new FileOutputStream(file1);

// FileOutputStream(File file, boolean append) 指明数据的输出路径,(是否允许追加)是否允许覆盖原数据
FileOutputStream out1=new FileOutputStream(file1,true);

// 从控制台输入数据,然后在使用FileOutputStream将数据写出到E:/mytest.txt
// 创建Scanner类的对象
Scanner read = new Scanner(System.in);
System.out.println("请输入需要保存的数据:");
// 接受数据
String info = read.next();
// //写出数据
// 将String数据转换成byte[]
byte data[] = info.getBytes();

// void write(byte[] b) 写出字节数组中全部。
//out1.write(data);

// void write(byte[] b, int off, int len) 写出字节数组中部分。 // int
// off---数组的起始位置
// int len----写出的数据个数
// out1.write(data,5,5);

// void write(int b)一次写出一个字节的数据
//out1.write(data[0]);
// 写出一个字符串
for (int i = 0; i < data.length; i++) {
out1.write(data[i]);
}
// void close() 关闭此文件输出流并释放与此流有关的所有系统资源。
out1.close();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  IO流 java class