java实验报告9 输入输出流

实验目的

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();
	}

}

  • 12
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
实验1 分析成绩单 1. 实验目的:掌握字符输入输出用法。 2. 实验代码: Fenxi: import java.util.*; public class Fenxi{ public static double getTotalScore(String s){ Scanner scanner=new Scanner(s); scanner.useDelimiter("[^0123456789.]+"); double totalScore=0; while(scanner.hasNext()){ try{ double score=scanner.nextDouble(); totalScore=totalScore+score; } catch(InputMismatchException exp){ String t=scanner.next(); } } return totalScore; } } AnalysisResult: import java.io.*; import java.util.*; public class AnalysisResult{ public static void main(String args[]){ File fRead=new File("score.txt"); File fWrite=new File("scoreAnalysis.txt"); try{ Writer out= new FileWriter(fWrite,true);//以尾加方式创建指向文件fWrite的out BufferedWriter bufferWrite=new BufferedWriter(out); //创建指向out的bufferWrite Reader in=new FileReader(fRead); //创建指向文件fRead的in BufferedReader bufferRead=new BufferedReader(in); //创建指向in的bufferRead String str=null; while ((str=bufferRead.readLine())!=null){ double totalScore =Fenxi.getTotalScore(str); str=str+"总分:"+totalScore; System.out.println(str); bufferWrite.write(str); bufferWrite.newLine(); } bufferRead.close(); bufferWrite.close(); } catch(IOException e){ System.out.println(e.toString()); } } } 3. 结果截图: 4. 实验分析: 1. 改进程序,使得能统计出每个学生的平均成绩。 答: 2. 现在有如下格式的货物明细(文本格式)goods.txt 品名:电视,length:102 cm,width:89 cm,height:56 cm. 品名:轿车,length:4502 cm,width:178 cm,height:156 cm. 品名:桌子,length:125 cm,width:78 cm,height:68 cm. 答: CalculateVolume.java import java.io.*; import java.util.*; public class CalculateVolume{ public static void main(String args[]){ File fRead=new File("goods.txt"); File fWrite=new File("goodsVolume.txt"); try{Writer out=new FileWriter(fWrite,true); BufferedWriter bufferWrite=new BufferedWriter(out); Reader in=new FileReader(fRead); BufferedReader bufferRead=new BufferedReader(in); String str=null; while((str=bufferRead.readLine())!=null){ double s=Jisuan.getVolume(str); str=str+"体积:"+s+"cm^3"; System.out.println(str); bufferWrite.write(str); bufferWrite.newLine(); } bufferRead.close()

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文哲爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值