0


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

}
标签: java 开发语言

本文转载自: https://blog.csdn.net/m0_66081324/article/details/125107865
版权归原作者 文哲爱学习 所有, 如有侵权,请联系我们删除。

“java实验报告9 输入输出流”的评论:

还没有评论