IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java流(Stream)、文件(File)相关功能 ——菜鸟教程 -> 正文阅读

[Java知识库]Java流(Stream)、文件(File)相关功能 ——菜鸟教程

目录

1.读取控制台输入

创建BufferedReader的基本语法

从控制台读取多字符输入

示例用read()方法从控制台不断读取字符直到用户输入q

从控制台读取字符串

2.读写文件

FileinputStream

FileOutputStream



1.读取控制台输入

Java的控制台输入由System.in完成。

为了获得一个绑定到控制台的字符流,你可以把 System.in 包装在一个 BufferedReader 对象中来创建一个字符流。

创建BufferedReader的基本语法

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

对象创建后,可以使用read()方法从控制台读取一个字符,或者用readLine()方法读取一个字符串。

从控制台读取多字符输入

从BufferedReader对象读取一个字符需要使用read()方法,语法如下:

int read() throws IOException?

每次调用read()方法,他就会从输入流读取一个字符并把该字符作为整数值返回。当流结束的时候返回-1.抛出IOException。

示例用read()方法从控制台不断读取字符直到用户输入q

/**
 * @author asus
 */
public class BRRead {
    public static void main(String[] args) {
        char c = 0;
        //使用System.in创建BufferedReader
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("输入字符,按下'q'键退出。");
        //读取字符
        do{
            try {
                c = (char) br.read();
            } catch (IOException e) {
                e.printStackTrace();
            }
            System.out.println(c);
        } while (c != 'q');
    }
}

执行结果如下:


从控制台读取字符串

从标准输入读取一个字符串需要使用BufferedReader的readLine()方法

一般格式

String readLine() trhows IOException

示例程序读取和显示字符行直到输入了"end"

/**
 * @author asus
 */
public class BRReadLines {
    public static void main(String[] args) {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = null;
        System.out.println("Enter lines of text.");
        System.out.println("Enter 'end' to quit.");
        do {
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            System.out.println(str);
        } while (!str.equals("end"));
    }
}

执行结果为:

?注:JDK5后的版本可使用Java Scanner类来获取控制台的输入


2.读写文件

一个流被定义为数据序列。输入流用于从源读取数据、输出流用于向目标写数据。

描述输入流和输出流的类层次图如下:


FileinputStream

该流用于从文件读取数据,它的对象可以用new关键字来创建。

有多种构造方法可以用来创建对象。

可以使用字符串类型的文件名来创建一个输入流对象来读取文件

InputStream f = new?FileInputStream("C:/java/hello");

也可以使用一个文件对象来创建一个输入流对象来读取文件。

File f = new File("C:/java/hello");

InputStream in = new FileInputStream(f);

常见操作如下:


FileOutputStream

该类用来创建一个文件并向文件中写数据。

如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。

同输入流,构造方法也差不多

OutputStream f = new FileOutputStream("C:/java/hello")

或者

File f = new File("C:/java/hello");

OutputStream fOut = new FileOutputStream(f);

常用操作:

用法实例:

public class fileStreamTest {
    public static void main(String[] args) {
        try {
            byte bWrite[] = { 11, 66, 44, 36, 56};
            OutputStream os = new FileOutputStream("E:" + File.separator + "xiaoyuan.txt");
            for (int i = 0; i < bWrite.length; i++) {
                //writes the bytes
                os.write(bWrite[i]);
            }
            os.close();

            InputStream is = new FileInputStream("E:" + File.separator + "xiaoyuan.txt");
            int size = is.available();
            for (int j = 0; j < size; j++) {
                System.out.println((char) is.read() + " ");
            }
            is.close();
        } catch (IOException e) {
            System.out.print("Exception");
        }
    }
}

?上面程序创建了一个xiaoyuan.txt文件,并把给定打的数字以二进制形式写进该文件,同时输出到控制台上。由于代码是二进制写入,会出现乱码。

解决乱码示例:

/**
 * @author asus
 */
public class fileStreamTest2 {
    public static void main(String[] args) {
        try {
            File f = new File("D:" + File.separator + "xiaoyuan.txt");
            //构建FileOutputStream对象,文件不存在时会自动创建
            FileOutputStream fop = new FileOutputStream(f);
            //构建OutputStreamWriter对象,参数可以指定编码,默认为操作系统默认编码
            OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8");
            //写到缓冲区
            writer.append("中文输入");
            //换行
            writer.append("\r\n");
            //刷新缓冲区,写入到文件,如果下面已经没有写入的内容了,直接close也会写入
            writer.append("English");
            //关闭写入流,同时会把缓冲区内容写入文件
            writer.close();
            //关闭输出流,释放系统资源
            fop.close();
            //构建FileInputStream对象
            FileInputStream fip = new FileInputStream(f);
            // 构建InputStreamReader对象,编码与写入相同
            InputStreamReader reader = new InputStreamReader(fip, "UTF-8");

            StringBuffer sb = new StringBuffer();
            while (reader.ready()) {
                // 转成char加到StringBuffer对象中
                sb.append((char) reader.read());
            }
            System.out.println(sb.toString());
            reader.close();
            fip.close();
        }catch (IOException e){
            System.out.println("Exception");
        }
    }
}

执行结果为:

?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-17 15:15:56  更:2021-08-17 15:18:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 5:44:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码