实验要求和目的
深入理解java输入输出流相关类的基本用法,并且可以掌握Java程序的编写和调试。
实验环境
Java语言,PC或android平台
实验具体内容
设计和编写以下程序:
程序1:
- 从键盘读入多行字符串(英文),并将其写入到一个文本文件(如学号1.txt)中。
- 统计字符串中所有的字符个数,并且显示个数信息。(在步骤1的文档中显示字符个数统计信息)如,this document contains XX bytes in total.
程序2:
- 从1中文本文件读取所有的字符串。
- 将内容在命令行窗口显示出来(要求去掉所有空格)。
实验步骤
对于程序一:
实验要求我们从键盘输入多行文字,并存储在一个文件中,并统计字符的个数
首先定义一个文件的地址
在为此地址建立一个文件写入流
之后便可写入相关内容,定义一个循环,每次都输入一行文字,当一行输入仅为”over”时意味着写入结束,并输出文件的字符总大小
至此,文件写入结束,关闭写入流即可
对于程序二:
实验二要求我们在命令行中输出在程序一中所写入的除空格外的全部内容
首先,根据程序一中的文件地址创建一个字节输入流对象
对文件内容进行逐个读取字符,若字符为空格,跳过不再输出
至此,输出结束,关闭输入流即可
源代码
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Objects;
import java.util.Scanner;
/*
test
I love China
And I love ShenZhen University
But I don't think it is right
over
*/
//本包HW9的文件地址:"D:\IntelliJ IDEA 2023.2.5\test\HW9\Exercise.txt"
public class Q1 {
static void input(String str) throws IOException {
FileOutputStream f = new FileOutputStream(str, false);
//append:在原有基础上添加内容
//写入内容
Scanner r = new Scanner(System.in);
String s;
s = r.nextLine();
int num = 0;
//when you input 'over', it would be ended
while (!Objects.equals(s, "over")) {
f.write(s.getBytes());
num += s.length();
s = r.nextLine();
f.write('\n');
}
System.out.println("this document contains " + num + " bytes in total.");
f.close(); //资源释放
}
public static void main(String[] args) throws IOException {
String str = "D:\\IntelliJ IDEA 2023.2.5\\test\\HW9\\Exercise.txt";
input(str);
}
}
import java.io.*;
//本包HW9的文件地址:"D:\IntelliJ IDEA 2023.2.5\test\HW9\Exercise.txt"
public class Q2 {
static void output(String s) throws IOException {
//字节输入流
FileInputStream f = new FileInputStream(s);
//读取方法:逐步读取法,一个一个字符进行读取
int a;
while((a=f.read())!=-1) {
if ((char) a != ' ')
System.out.print((char) a);
}
f.close();
}
public static void main(String []args) throws IOException {
String str="D:\\IntelliJ IDEA 2023.2.5\\test\\HW9\\Exercise.txt";
output(str);
}
}