Java输入输出流2

来源:互联网 发布:复合材料设计软件 编辑:程序博客网 时间:2024/05/29 14:25
输入流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();}}


0 0