`

(二) 文本输入与输出

 
阅读更多

指定编码格式输入输出文本

    InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "utf-8");
    int b;
    StringBuilder sb = new StringBuilder();
    while((b=isr.read()) != -1){
        sb.append((char)b);
    }
    String str = sb.toString();
    isr.close();
    
    BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file), "utf-8"));  
    String line = null;  
    while((line=in.readLine()) != null){  
        System.out.println(line);  
    }  
    
    OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(file, true), "utf-8");
    osw.write("在文本后追加文字");
    osw.close();



// 常用输出方式
PrintWriter out = null;
try {
    out = new PrintWriter(new OutputStreamWriter(new FileOutputStream("C:\\Users\\sgq0085\\Desktop\\tmp.txt", false), "GBK"));
    out.println("汉字测试");
    out.println("中文测试");
    out.println("English");
} catch (Exception e) {
    logger.error("Error {} ", e);
} finally {
    IOUtils.closeQuietly(out);
}

 



通过读入器或写出器 FileReader和FileWriter来读写,但要注意编码格式,InputStreamReader中的方法getEncoding()是指创建时默认或指定的字符编码。
e.g.新建写出器FileWriter

    FileWriter out = new FileWriter("output.txt");
    //等同于
    FileWriter out = new FileWriter(new FileOutputStream("output.txt"));

 

1.写出文本输出
对于文本的输出可能希望使用PrintWriter,PrintWriter该类拥有以文本格式打印字符串和数字的方法,也可以将PrintWriter链接到FileWriter的方法

    //该构造使用默认的字符编码
    PrintWriter out = new PrintWriter("output.txt");
    //等同于
    PrintWriter out = new PrintWriter(new FileWriter("output.txt"));

 

使用与System.out相同的方法print,println和printf来打印数字、字符、boolean值、字符串和对象。
e.g.通过PrintWriter进行打印

String name = "the name string";
double number = 123;
out.print(name)

 

(1)println方法在行末添加对目标系统来说恰当的换行符(windows "\r\n" ,Unix "\n")
(2)设置写出器为自动清空模式,那么只要println被调用,缓冲区中所有的字符都会被发送到它们的目的地。默认情况下,自动清空机制是不使用的。通过设置PrintWriter(Writer out, Boolean autoFlush)
e.g.PrintWriter out = new PrintWriter(new FileWriter("file.txt"), true);    \\auto flush
(3)print方法不抛出异常,可以通过调用checkError方法来查看流是否出现了某些错误。
   
2.读入文本输入
以二进制格式写出数据,使用DataOutputStream;以文本格式写出数据,使用PrintWriter
e.g.通过BufferedReader类的nextLine方法读入一行文本

        BufferedReader in = new BufferedReader(new FileReader(file));
        String line;
        while((line=in.readLine()) != null){
            ... ...
        }

 

BufferedReader没有任何用于读入数字的方法,可以使用Scanner来读入文本。

3.文本格式储存对象
可以将对象以文本的形式存储(csv ,号)

        File file = new File(System.getProperty("user.dir") + "\\conf\\stream\\saveByCsv.csv");
        PrintWriter out = new PrintWriter(file);
        out.println("1|a|一");
        out.println("2|b|二");
        out.println("3|c|三");
        out.println("4|d|四");
        out.close();
       
        Scanner in = new Scanner(new FileReader(file));
        while(in.hasNextLine()){
            // | 在正则里有特殊用法需要转义
            String[] line = in.nextLine().split("\\|");
            ... ...
        }
        in.close();

 

4.字符集
Java SE 1.4中引入java.nio包用引入的Charset类统一对字符集的转换
字符集建立了两字节Unicode码元序列与使用本地字符编码方式的字符序列之间的映射。ISO-8859-1是最流行的字符编码之一,是一种对Unicode前256个字符进行单字节编码的方式。
Charset类使用的是IANA字符集注册中心标准化字符集名称。
(1)通过调用静态的forName方法来获得一个Charset,需要传递一个官方名称或别名,字符集名称大小写不敏感,每个字符集可以拥有许多别名。

        Charset cset = Charset.forName("ISO-8859-1");

 

(2)aliases方法返回别名构成的Set对象

        Set<String> aliases = cset.aliases();
        for(String alias : aliases){
            System.out.println(alias);
        }

 

(3)availableCharsets方法获取所有可用字符集

        Map<String, Charset> charsetMap = Charset.availableCharsets();
        for(String name : charsetMap.keySet()){
            System.out.println(name);
        }

 


(4)本地编码方式模式不能表示所有Unicode字符,如果某个字符不能表示,将转换成�
(5)编码encode

        String str = "汉字~~";
        ByteBuffer bbuf = cset.encode(str);
        byte[] bytes = bbuf.array();

 

(6)解码decode

        ByteBuffer bbuf = ByteBuffer.wrap(bytes, 0, bytes.length);
        CharBuffer cbuf = cset.decode(bbuf)
        String str = cbuf.toString();

 

 

分享到:
评论

相关推荐

    控制台输入记事本(文本输入输出)

    标题 "控制台输入记事本(文本输入输出)" 暗示了这是一个关于创建一个简单的文本编辑器或记事本程序的教程,该程序在命令行或控制台环境中运行,允许用户输入文本并进行输出。这个程序可能是用编程语言如C、C++或...

    Java 的二进制和文本输入输出

    Java 二进制和文本输入输出 Java 中的输入输出(Input/Output,简称 I/O)是指Java 程序与外部世界交互的一种机制。Java 提供了多种方式来实现输入输出,包括二进制I/O 流和文本I/O 流。 二进制I/O 流 Java 中的...

    java 将文件中二进制文件转换成文本文本文件并输出

    在Java编程语言中,将二进制文件转换为文本文档通常涉及到字符编码的理解和处理。二进制文件可以包含任何类型的数据,如图像、音频、视频或纯文本,但以非可读格式存储。而文本文档通常使用特定的字符编码(如ASCII...

    词法分析程序 文本输入输出

    #### 标题解读:“词法分析程序 文本输入输出” 词法分析(Lexical Analysis)是编译器设计中的一个重要步骤,它负责将源代码字符串分解成一系列有意义的词汇单元(tokens),如关键字、标识符、操作符等。本程序...

    输入与输出的概念ppt图表.rar

    颜色、字体和布局的选择也很关键,它们应当有助于突出重点,引导观众的视线流动,从而更好地理解输入输出的并列关系。 总结来说,输入与输出是计算机与外界交流的核心机制,而有效的图表设计能够直观地揭示这一过程...

    JAVA输入输出流实验报告

    Java中的输入输出流是程序与外部数据交互的重要方式,它允许我们读取和写入数据到各种来源,如键盘、文件、网络等。在Java中,输入输出流分为两大类:字节流(Byte Stream)和字符流(Character Stream)。本次实验...

    文本文件输入输出.cpp

    文本文件输入输出.cpp

    3.30 文本文件输入输出.rar

    在编程领域,文本文件输入输出是基础且至关重要的技能,特别是在C++编程中。这个压缩包文件"3.30 文本文件输入输出.rar"包含了多个C++源代码文件,这些文件主要关注如何处理文本文件,包括读取、写入、修改以及分析...

    JAVA实验报告三java输入输出.docx

    实验报告三:Java输入输出 本实验主要涵盖了Java中输入输出的基本操作,旨在让学生深入理解数据流的概念,熟悉Java流的层次结构,并掌握文件的读写操作。实验内容包括从键盘接收用户输入并在屏幕上显示,读取并显示...

    控制台输入记事本(文本输入输出)version2

    标题“控制台输入记事本(文本输入输出)version2”指的是一个软件开发项目,它创建了一个简单的控制台应用程序,该程序允许用户在命令行界面中进行文本输入和输出,类似于一个基本的记事本功能。这个项目可能是针对...

    实验9 Java输入输出流.doc

    Java输入输出流是Java编程中一个非常重要的概念,主要用于数据的读取和写入操作,包括文本文件和二进制文件。在实验9中,主要目的是理解和掌握I/O流的分类,以及如何进行文本和二进制文件的读写。 I/O流在Java中被...

    java 酒店管理系统 输入输出 写入文本

    在Java编程语言中,开发一个酒店管理系统涉及到许多关键知识点,其中输入输出(I/O)处理是核心部分之一,特别是与文本文件的交互。这个系统的主要功能包括读取、写入和修改存储在文本文件中的酒店相关信息。下面...

    VB 用Text属性做输入和输出

    TextBox控件是最常见的用户界面元素之一,用于接收用户的文本输入或显示程序生成的信息。例如,当用户在TextBox上键入文字时,这些文字就会被保存在TextBox的Text属性中,供程序后续处理。 一、Text属性的使用 1. *...

    C语言文件输入与输出

    C语言输入输出函数 1.fopen&#40;&#41;函数 fopen函数用于打开文件,其调用格式为:FILE*fopen&#40;char*filename,*type&#41;; 在介绍这个函数之;前,先了解一下下面的知识。(1)流(stream)和文件(file) 流和文件在TurboC...

    LSTM多输入输出时间序列

    标题“LSTM多输入输出时间序列”指的是使用长短期记忆网络(LSTM)处理具有多个输入和输出的时间序列预测问题。在机器学习和深度学习领域,时间序列分析通常用于预测未来的趋势,如股票价格、天气预报或电力需求等。...

    输出输入文本的每个单词长度

    你的程序要读入一行文本,其中以空格分隔为若干个单词,以‘.’结束...你要输出这行文本中每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如“it's”算一个单词,长度为4。注意,行中可能出现连续的空格。

    C++实验:输入输出流

    内容1:标准输入输出流重定向 (1) 新建一个工程demo1,设计一个类Time,成员变量为时(h)、分(m)、秒(s)。 (2) 分别为类Time重载提取运算符(&gt;&gt;)和插入运算符(&gt;&gt;)。 a. 输入格式:14 30 15 b. 输出格式:14.5042 (3) ...

    实现文本文件的输入和输出

    将字符“I love you!我爱你们!”写入文本文档,并对文本文件进行读取操作,输出文本文件。

    VB.NET 输入输出

    在VB.NET编程环境中,输入输出(I/O)是程序与外部世界交互的关键部分。它允许程序读取数据、写入数据或与用户进行交互。在这个主题中,我们将深入探讨如何利用VB.NET进行输入输出操作,特别是关注`Debug.Write`方法...

Global site tag (gtag.js) - Google Analytics