栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

第八次 java实验 紫金学院 输入/输出流

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第八次 java实验 紫金学院 输入/输出流

一、实验目的

  1. 熟悉流——输入/输出流的基本概念。
  2. 掌握常用输入/输出流的使用。
  3. 掌握文件与文件字节流操作(重点)。

二、实验原理及说明

  1. 在Java中把不同的数据源和程序间的数据传输(输入和输出或者数据的读和写)

抽象地描述成“流”(Stream),计算机中处理的数据形式为“0”或者“1”这样的二进制位,流也称为数据流;Java中一切均为对象,流也是对象。

  1. 流的操作步骤:

1)实例化流(获得流对象)-->new+相应流的构造方法;

2)包装流-->提高流的处理效率,或者增强流的功能;

3)读写流-->流操作,从输入流中读数据,往输出流中写数据;

4)如果是输出流,清除缓存;

5)关闭流-->节省内存资源,减轻内存的压力。

  1. InputStream类提供的read方法以字节为单位顺序地读取源中的数据。
        1.  int read()
        2.  int read(byte b[ ])//从源中读取b.length个字节到b中,返回实际读取字节数。如果文件到达末尾返回-1
        3.  int read(byte b[ ], int off, int len)//从源中读取len个字节到b中,并返回实际读取的字节数,参数off指定从字节数组的某个位置开始存放读取的数据
  2. OutputStream流以字节为单位顺序地写文件,只要不关闭流,每次调用write方

法就顺序地向目的地写入内容。

  1.  void write(int n) //将指定的字节写入此输出流
  2.  void write(byte b[ ])//将 b.length 个字节从指定的 byte 数组写入此输出流
  3.  void write(byte b[ ],int off,int len)//将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流
  1. Reader类/Writer类是处理所有字符流输入/输出类的父类,具有与InputStream类

  /OutputStream类相似的方法

  1. 如果需要以字节为单位读取/写入文件,就可以使用FileInputStream类

/FileOutputStream类来创建指向该文件的文件字节输入/输出流。

FileInputStream(String name);

FileInputStream(File file);

FileOutputStream(String name);

FileOutputStream(File file);

  1. File类的使用:

 1)一个File类的对象,表示了磁盘上的文件或目录;一般情况下,File只表示文件,但在Java中它不仅表示文件而且还表示目录;

2)File类提供了与平台无关的方法来对磁盘上的文件或目录进行操作。

  • File(String filename); //File对象的构造方法
  • File(String directoryPath,String filename); //File对象的构造方法
  • File(File f, String filename); //File对象的构造方法
  • public boolean mkdir() ; //创建目录
  • public String[ ] list(); //用字符串形式返回目录下的全部文件
  • public File [ ] listFiles(); //用File对象形式返回目录下的全部文件
  • public String[ ] list(FilenameFilter obj) ; //该方法用字符串形式返回目录下的

指定类型的所有文件

  • public File [ ] listFiles(FilenameFilter obj) ; //该方法用File对象形式返回目录

 下的指定类型所有文件

  • public boolean accept(File dir, String  name); //FilenameFilter接口一个方法
  1. 使用File类创建一个文件对象
  • File file=new File("c:\myletter","letter.txt");
  • public boolean createNewFile();
  1. 删除当前文件
  • public boolean delete();

三、实验内容

  1. 演示通过字节流实现文件复制功能。

提示:使用FileInputStream类/FileOutputStream类。

  1. 读取一个文本文件,并显示该文本的内容,同时写到另外一个文本文件中。

  提示:使用File类进行文件或目录的操作。

仅限借鉴:

 FileOperator

package test08;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.PrintWriter;

public class FileOperator {
	
	public void newFolder(String folderPath){
		try {
			String filePath=folderPath;
			filePath=filePath.toString();
			File myFilePath=new File(filePath);//将给定路径名字符串转换为抽象路径名,创建一个新的File实例
			if(!myFilePath.exists()){//判断抽象路径名表示的文件或目录是否存在
				myFilePath.mkdir();//mkdir创建抽象路径名指定的目录
			}
		} catch (Exception e) {
			System.out.println("新建目录操作出错");
			e.printStackTrace();
		}
		System.out.println("新建目录操作成功");
	}
	
	
	public void newFile(String filePathAndName,String fileContent){
		try {
			String filePath=filePathAndName;
			filePath=filePath.toString();
			File myFilePath=new File(filePath);//将给定路径名字符串转换为抽象路径名,创建一个新的File实例
			if(!myFilePath.exists()){//判断抽象路径名表示的文件或目录是否存在
				myFilePath.createNewFile();//createNewFile当具有次抽象路径名指定名称的文件不存在时,创建一个新的空文件
			}
			FileWriter resultFile=new FileWriter(myFilePath);
			PrintWriter myFile =new PrintWriter(resultFile);
			String strContent=fileContent;
			myFile.println(strContent);
			resultFile.close();//关闭指针
		} catch (Exception e) {
			System.out.println("新建文件操作出错");
			e.printStackTrace();
		}
	}
	
	
	public void delFile(String filePathAndName){
		try {
			String filePath=filePathAndName;
			filePath=filePath.toString();
			File mydelFile=new File(filePath);//将给定路径名字符串转换为抽象路径名,创建一个新的File实例
			mydelFile.delete();
		} catch (Exception e) {
			System.out.println("删除文件操作出错");
			e.printStackTrace();
		}
		System.out.println("删除文件操作成功");
	}
	
	public void delFolder(String folderPath){
		try {
			delAllFile(folderPath);
			String filePath=folderPath;
			filePath=filePath.toString();
			File myFilePath=new File(filePath);//将给定路径名字符串转换为抽象路径名,创建一个新的File实例
			myFilePath.delete();
		} catch (Exception e) {
			System.out.println("删除文件夹操作出错");
			e.printStackTrace();
		}
	}
	
	
	public void delAllFile(String path){
		File file=new File(path);
		if(!file.exists()){
			return;
		}
		String[] tempList=file.list();
		File temp=null;
		for(int i=0;i 

FileOperatorTest

package test08;

public class FileOperatorTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		FileOperator fileOperator=new FileOperator();
		//新建文件夹
		fileOperator.newFolder("D:\zl");
		
		//新建zl.txt文件,写入内容mzl
		fileOperator.newFile("D:\zl\zl.txt", "zl");
		//新建zl.txt文件,写入内容zl666
		fileOperator.newFile("D:\zl\zl1.txt", "zl11");
		
//		//读文件夹
//		System.out.println("=============");
//		fileOperator.readFile("D:\zl");
		
		//复制文件zl.txt给zl22.txt
		System.out.println("=============");
		fileOperator.copyFile("D:\zl\zl.txt", "D:\zl\zl22.txt");
		
		
		//复制D:\zl\zl1文件夹的全部文件给D:\zl---文件的内容会一同复制过来
		System.out.println("=============");
		fileOperator.copyFolder("D:\zl\zlwj", "D:\zl");
		
		//删除文件
		System.out.println("=============");
		fileOperator.delFile("D:\zl\copyFileTest.txt");
	}

}

 代码运行:

 ByteCharacterConversionStream

package test08;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;

public class ByteCharacterConversionStream {
	
	
	public void writeFile(String filePathAndName,String fileContent){
		try {
			
			String filePath=filePathAndName;
			
			FileOutputStream fos=new FileOutputStream(filePath);
			
			OutputStreamWriter osw=new OutputStreamWriter(fos);//创建字符流--需要把字节流转成字符流
			
			BufferedWriter zl=new BufferedWriter(osw);//创建字符缓冲输入输出流
			
			if(fileContent!=null){//确定要写入文件的内容不为空
				zl.write(fileContent);
				zl.newLine();
			}
			
			zl.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	
	public void readFile(String filePathAndName){
		try {
			//System.out.println(filePathAndName);
			FileInputStream fis=new FileInputStream(filePathAndName);
			
			
			Reader reader=new InputStreamReader(fis);//创建字符流--需要把字节流转成字符流
			
			
			BufferedReader br=new BufferedReader(reader);//创建字符缓冲输入输出流
			
			String str;
			while((str=br.readLine())!=null){
				System.out.println(str);
			}
			
			br.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	
	public void copyFile(String oldFilePath,String newFilePath){
		try {
			FileInputStream fis=new FileInputStream(oldFilePath);
			InputStreamReader isr=new InputStreamReader(fis);
			BufferedReader br=new BufferedReader(isr);
			
			FileOutputStream fos=new FileOutputStream(newFilePath);
			OutputStreamWriter osw=new OutputStreamWriter(fos);
			BufferedWriter zl=new BufferedWriter(osw);
			
			String str;
			while((str=br.readLine())!=null){
				zl.write(str);
				zl.newLine();
			}
			br.close();
			zl.close();
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}

	}
}

ByteCharacterConversionStreamTest

package test08;

public class ByteCharacterConversionStreamTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ByteCharacterConversionStream file=new ByteCharacterConversionStream();
		
		//写文件
		file.writeFile("D:\zl\zlhk.txt", "zl");//当文件不存在时会自动创建新文件
		
		//读文件
		System.out.println("文件的内容是:");
		file.readFile("D:\zl\zlhk.txt");
		
		//复制文件
		file.copyFile("D:\zl\zlhk.txt", "D:\zl\zlhk2222.txt");
		
		
		System.out.println("新文件的内容是:");
		file.readFile("D:\zl\zlhk2222.txt");
	}

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/863531.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号