java--打印流&;amp;Properties(五)

网友投稿 633 2022-05-30

Java--打印流&Properties(五)

一、打印流

思考:如果现在要想完成一个字符串或者是boolean型或者是字符型的数据输出使用OutputStream是否方便?

肯定是不方便的,因为OutputStream中只能操作字节数据,所以其他的数据类型很难操作,那么在Java的IO包中为了解决这种问题增加了两种类:PrintStream、PrintWriter。

打印流有非常好的打印功能,可以打印任何的数据类型。如,整数,小树,字符串等。

观察PrintStream类的构造:

public PrintStream(File file) throws FileNotFoundException

public PrintStream(OutputStream out)

虽然PrintStream是OutputStream的子类,但是在实例化的时候依然需要一个OutputStream的对象。

PrintWriter和PrintStream都属于输出流,分别针对字符和字节。

PrintWriter和PrintStream重载的print()和println()用于多种数据类型的输出。

print()里的参数不能为空;println()可以

PrintWriter和PrintStream输出操作不抛出异常

PrintStream调用println方法有自动flush功能;

二、打印流实例

Java5后,PrintStream类多了printf()方法用于格式化输出操作。但是格式化输出的时候必须指定输出数据的类型:

当然你也可以全部使用“%s”来表示所有的数据类型

打印流实例

package io;

import java.io.FileWriter;

import java.io.IOException;

import java.io.PrintStream;

import java.io.PrintWriter;

public class PrintDemo {

public static void main(String[] args) throws IOException {

PrintStream ps = new PrintStream("out.txt");

ps.write('A');

// ps.print();

ps.print(false);

ps.print(true);

ps.println();

ps.println("Will");

ps.println(113);

ps.println(false);

ps = System.out;

System.out.println("");

PrintWriter pw = new PrintWriter("out2.txt");

// PrintWriter(Writer out, boolean autoFlush)

// 与 PrintStream 类不同,如果启用了自动刷新,则只有在调用 println、printf 或 format

// 的其中一个方法时才可能完成此操作

//pw = new PrintWriter(new FileWriter("out3.txt"), true);

pw = new PrintWriter(System.out,true);

pw.println("呼哈哈哈哈");

pw.println(false);

// pw.close();

}

}

打印流格式化输出

package io;

public class PrintfDemo {

public static void main(String[] args) {

String name = "Will";

int age = 17;

char score = 'A';

//名字= XX,年龄=xx,分数=xx

System.out.println("名字=" + name +",年龄=" + age +",分数=" + score);

//格式 %占位符

//String format = "名字= %s,年龄=%d,分数=%c";

String format = "名字= %s,年龄=%s,分数=%s";

System.out.printf(format, name,age,score);

/**

* 打印十进制,八进制,十六进制

*/

System.out.println();

int num = 20;

System.out.printf("八进制=%o, 十六进制=%x",num,num);

System.out.println();

System.out.println(Integer.toOctalString(num));

System.out.println(Integer.toHexString(num));

}

}

Properties实例

package io;

import java.io.FileInputStream;

java--打印流&Properties(五)

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.PrintStream;

import java.util.Properties;

public class PropertiesDemo {

private static Properties p = null;

private static String filename = "xx.properties";

static{

p = new Properties();

InputStream inStream = null;

try{

// inStream = new FileInputStream(filename);

//从classpath的根路径取加载

/**

* 1.先获得类加载器

* 2.得到加载器对象之后,调用 getResourceAsStream()

*/

inStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(filename);

p.load(inStream);

}catch(Exception e){

e.printStackTrace();

}

}

public static void main(String[] args) throws IOException {

/**

* void load(InputStream inStream)

从输入流中读取属性列表(键和元素对)。

void load(Reader reader)

按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。

void list(PrintStream out)

将属性列表输出到指定的输出流。

void list(PrintWriter out)

将属性列表输出到指定的输出流。

void store(OutputStream out, String comments)

以适合使用 load(InputStream) 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。

void store(Writer writer, String comments)

以适合使用 load(Reader) 方法的格式,将此 Properties 表中的属性列表(键和元素对)写入输出字符。

void storeToXML(OutputStream os, String comment)

发出一个表示此表中包含的所有属性的 XML 文档。

*/

System.out.println(p);

p.list(System.out);//列出到控制台

p.list(new PrintStream("87.java"));

p.store(new FileOutputStream("输出.properties"), "不知道是啥");

//p.storeToXML(new FileOutputStream("xml.xml"), "注视内容");

p.loadFromXML(new FileInputStream("xml.xml"));

System.out.println("--"+p);

}

}

Java

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:手把手教学:如何引入 SDK
下一篇:Docker 的镜像管理
相关文章