0%

【Java】IO流作业


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package IOExperiment;

import java.io.*;

public class Program {
private static final String fileName = "test.txt";//创建一个常量,用于保存文件名
public static void main(String[] args)
{
new CreatFile("D:\\"+fileName,"Hello Java");//调用CreatFile类的构造方法创建D盘的文件
ReadFile read=new ReadFile("D:\\"+fileName);//创建读取类
new CreatFile("E:\\"+fileName,read.BeginRead());//使用读取类读取文件内容,并以此创建新的文件
}
}

//创建文件类
class CreatFile
{
private String filePath;//文件的位置
private String fileContent;//文件的内容
private BufferedWriter outputstream;//输出数据流
//构造函数,需要分别传入文件位置和文件内容
public CreatFile(String filePath,String content)
{
this.filePath=filePath;
this.fileContent=content;//赋值
BeginCreate();//调用方法构建文件
}

//构造文件的方法
private void BeginCreate()
{
try
{
outputstream=new BufferedWriter(new FileWriter(filePath));//实例化输出流,这里可能抛出异常,所以使用catch捕获之
outputstream.write(fileContent);//把文件内容写入文件
outputstream.flush();//刷新并清空流数据
}
catch (Exception e)//捕获创建文件的异常
{
e.printStackTrace();//打印异常原因
}
finally
{
try
{
if(outputstream!=null)outputstream.close();//不管异常是否存在,终需要关闭流
}
catch (Exception ex)//捕获关闭流时的异常
{
ex.printStackTrace();
}
}
}
}

//读取文件的类
class ReadFile
{
private String filePath;//文件的位置
BufferedReader inputstream;//输入流
//读取文件类的构造方法,只需要传入文件位置
public ReadFile(String filePath)
{
this.filePath=filePath;//赋值
}

//读取文件的方法,因为需要返回文件的内容,所以设为公共方法
public String BeginRead()
{
String result=null;//要返回字符串,考虑到读取失败的情况,遂在此声明并初始化返回值,以杜绝无值返回的问题
try
{
inputstream = new BufferedReader(new FileReader(filePath));//创建输入流
result=inputstream.readLine();//读取文件的第一行,将读取结果传给result
}
catch(Exception e)//考虑到读取失败的问题,需捕获读取时的异常
{
e.printStackTrace();
}
finally
{
try
{
if(inputstream!=null)inputstream.close();//不管读取成功与否,终需要关闭输入流
}
catch (Exception ex)//捕获输入流关闭失败的异常
{
ex.printStackTrace();
}
}
return result;//返回读取结果
}
}