实验目的
1.理解Java技术体系中“流”的概念。
2.掌握System.in和System.out的基本使用方法
3.掌握字节流和字符流的常用类及使用方法。
4.掌握Java程序对文件的基本操作。
**实验学时 **4学时
实验内容
1.编写程序使用System.in对象的read()方法读取键盘输入,当程序运行时,首先询问需要输入的数据个数,然后依次输入指定个数的整数,输入完毕后,输出所有输入整数的和。
实现代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test1 {
public static void main(String[] args) throws NumberFormatException, Exception {
// 创建一个接收键盘输入数据的输入流
int b[] = new int[512];
int sum = 0;
InputStreamReader ir = new InputStreamReader(System.in);
// 把输入流放到缓冲流里
BufferedReader br = new BufferedReader(ir);
System.out.println("你想输入多少个数:");
// Integer.parseInt是将整型数据Integer转换为基本数据类型int
int n = Integer.parseInt(br.readLine());
for (int i = 0; i < n; i++) {
int a = Integer.parseInt(br.readLine());
b[i] = a;
sum += b[i];
}
for (int i = 0; i < n; i++) {
System.out.print(b[i] + " ");
}
System.out.println("总数:" + sum);
}
}
2.在电脑D盘创建一个名为FileList的文本文件,将D盘下所有文件及文件夹名称保存到这个文件中。
实现代码:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
/*
* 在电脑D盘创建一个名为FileList的文本文件,将D盘下所有文件及文件夹名称保存到这个文件中
*
*/
public class Test2 {
public static void main(String[] args) {
try {
File f = new File("D:\\FileList");
f.createNewFile();
File file = new File("D:\\");
String[] fs = file.list();
FileOutputStream out = new FileOutputStream(f);
for (String fs1 : fs) {
out.write(fs1.getBytes());
out.write("\r\n".getBytes());
out.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
3.编写程序读取一个文件(文件名由键盘输入)的内容,可对其进行修改,再保存。
实现代码:
import java.io.FileWriter;
import java.io.IOException;
/*
* .编写程序读取一个文件(文件名由键盘输入)的内容,可对其进行修改,再保存。
*
*/
public class Test3 {
public static void main(String[] args) {
Test3.testFileWrite("我爱打代码", "C:\\Dell\\Test.txt");
}
// test是输入的内容 outPath 是文件路径
public static void testFileWrite(String test, String outPath) {
try {
FileWriter fw = new FileWriter(outPath);
fw.write(test);// 写到内存中
fw.flush();// 把内存的数据刷到硬盘
fw.close();// 关闭流
} catch (Exception e) {
e.printStackTrace();
}
}
}
4.请编程实现文件的拷贝功能(可跨目录进行拷贝),要求源文件名及目标文件名在程序运行后根据提示输入。
实现代码:
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class Test4 {
public static void main(String[] args) {
Test4.copyFile("C:/Dell/Test.txt", "C:/Users/splendid/Desktop/Test.txt");
}
public static void copyFile(String inPath, String outPath) {
try {
FileInputStream in = new FileInputStream(inPath);// 读取的源文件
FileOutputStream out = new FileOutputStream(outPath);// 要复制到哪里
byte[] b = new byte[1024];// 设置一个byte数组接收读取的文件的内容
int len = 0;// 设置读取数据的长度
// in.read方法有一个返回值,返回值是读取的数据的长度,如果读取到最后一个数据,还会向后读一个,这个时候返回值就是-1
// 也就意味着当in.read的返回值是-1的时候整个文件就读取完毕了
while ((len = in.read(b)) != -1) {
out.write(b, 0, len);
// 参数1是写的缓冲数组,参数2是从数组的那个位置开始,参数3是获取的数组的总长度
}
out.flush();
out.close();
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
5.对于重要文件通常需要进行加密处理,请编写程序实现对文本文件的加密,密码表如下,明文如果是大写字母则密文也为密码表对应大写字母,明文如果是小写字母则密文也为密码表对应小写字母。
明文
A
B
C
D
E
F
G
H
I
J
K
L
M
密文
T
O
I
A
N
D
E
G
H
Z
B
K
F
明文
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
密文
J
M
C
L
P
Y
V
X
Q
R
W
U
S
实现代码:
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Scanner;
public class Test5 {
public static void main(String[] args) throws Exception {
// 创建两个数组 分别填入字母以及加密后的密文
char reality[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
char fake[] = { 'T', 'O', 'I', 'A', 'N', 'D', 'E', 'G', 'H', 'Z', 'B', 'K', 'F', 'J', 'M', 'C', 'L', 'P', 'Y',
'V', 'X', 'Q', 'R', 'W', 'U', 'S' };
FileWriter fw = new FileWriter(new File("C:\\Dell\\Test5.txt"));
FileReader fr = new FileReader(new File("C:\\Dell\\Test5.txt"));
Scanner in = new Scanner(System.in);
String str = in.nextLine();
char[] a = str.toCharArray();// toCharArray() 方法将字符串转换为字符数组。
for (int n = 0; n < a.length; n++) {
for (int i = 0; i < 26; i++) {
if (a[n] == reality[i]) {// 一个一个的进行字母的加密
a[n] = fake[i];
} else if (a[n] <= 'z' && a[n] >= 'a') {
// 如果输入是小写的先转化成大写 然后对应大写的字母
if (reality[i] == (char) (a[n] - 32)) { // a[n] - 32后成对应的ASCII码 因此要强制类型转换
a[n] = (char) (fake[i] + 32);//将大写的密文转换成小写
}
}
}
}
fw.write(a);
in.close();
fw.close();
fr.close();
}
}
版权归原作者 文哲爱学习 所有, 如有侵权,请联系我们删除。