[Java 实验6 - 流和文件]

该实验旨在掌握对流的基本概念,了解字节流和字符流的区别,以及文件的访问和操作。实验包括两个部分:Digital.java程序生成10个0-50的随机数并写入n.txt,HandInput.java则接收用户键盘输入并保存至e.txt,用户输入end结束。实验涉及BufferedWriter、FileWriter和Scanner等IO类的使用。

实验题目

一、实验目的

1、对流的基本概念的掌握。

2、对字节流和字符流的区别。

3、文件的访问与操作。

二、实验环境

1、硬件环境:个人 PC 机

2、软件环境:windows 操作系统+JDK1.8 或以上+Eclipse 或 Idea

三、实验内容

1、 编写一个程序 Digital.java,随机生成 10 个数,取值范围为 0~50。要求将生成的 10 个数从小到大写入 n.txt 文件保存。

2、 编写一个程序 HandInput.java,接受用户的键盘输入,存入指定的文件。用户的输 入以行为单位,当用户输入 end 时,程序结束。如果指定的文件已经存在,程 序提示用户,并结束程序。

四、注意事项

1、熟悉各种流的使用。

2、掌握各种流类的使用的区别。

实验内容

1. Digital类

package Test06;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Digital {

    public static void main(String[] args) {
        Random random = new Random();
        List list = new ArrayList<Integer>();
        int number = 0;
        for (int i = 0; i < 10 ; i++) {
            number = random.nextInt(51);
            if(!list.contains(number)) {
                list.add(number);
            }
        }


        try {
            File write = new File(".\\n.txt");
            write.createNewFile();
            System.out.println("文件创建成功");
            BufferedWriter out = new BufferedWriter(new FileWriter(write));
            out.write(list+"\t");
            System.out.println("文件写入成功");
            out.flush();
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

2.HandInput类

package Test06;

import java.io.*;
import java.util.Scanner;

public class HandInput {

 public static void main(String[] args) throws IOException {
     String fileName = ".\\e.txt";// 要写入的文件路径
     File file = new File(fileName);// 创建文件对象
     writefile(file);
 }

 // 向文件中写入
 public static void writefile(File file) throws IOException {
     // 判断是否有该文件路径
     if (file.getParentFile().exists()) {
             // 判断是否有这个文件,如果没有就创建它
             if (!file.exists()) {
                   file.createNewFile();
              }
             // 创建键盘录入对象
             Scanner sc = new Scanner(System.in);
             // 获得键盘录入字符并判断
             String s = sc.nextLine();
             while (!s.endsWith("end")) {
                  // 创建输出字节流
                  FileOutputStream fos = new FileOutputStream(file, true);
                  // 将输出字节流转化为字符流
                  OutputStreamWriter osw = new OutputStreamWriter(fos);
                  // 将字符流转化为缓存模式
                  BufferedWriter bw = new BufferedWriter(osw);
                  // 写入
                  bw.write(s+"\n");
                  // 关闭输出流
                  bw.close();
                  osw.close();
                  fos.close();
                  // 再次接受键盘录入
                  s = sc.nextLine();
              }
         }else{
             System.out.println("你指定的文件路径不存在,请重新检查文件路径");
         }
     }

 }

实验总结

1.流的概念

  1. 内存与存储设备之间传输数据的通道

  2. 数据借助流传输

2.IO的分类

按照 流的方向 进行分类:

内存作为参照物:

  • 往内存中:叫做输入(Input)。或者叫做读(Read)
  • 从内存中出来:叫做输出(Output)。或者叫做写(Write)

按照 读取数据方式 不同进行分类:

  • 按照 字节 的方式读取数据,一次读取1个字节byte,等同于一次读取8个二进制位。

这种流是万能的,什么类型的文件都可以读取。包括:文本文件,图片,声音文件,视频文件 等…

 


I: Input
O:OutPut

通过IO即可完成对磁盘的读写

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值