赞
踩
思路:使用FileReader类读取文本文件中的内容到一个StringBuffer对象中,并将其打印到屏幕上。
代码文件:PrintChenApplication.java ChenOperator.java
数据文件:华文楷体.txt
华文隶书.txt
宋体.txt
幼圆.txt
方正舒体.txt
黑体.txt
-->编译成字节码
javac PrintChenApplication.java ChenOperator.java
-->运行
参数解释:参数一为:用以填充的字符 参数二为:字体样式
字体样式包括:kt --华文楷体
ls --华文隶书
st --宋体
yy --幼圆
fs --方正舒体
ht --黑体
无参的情况:填充字符为“#”,字体样式为:“ls --华文隶书”
1.[图片] 1.png
2.[图片] 2.png
3.[图片] 有参的情况:填充字符为“@”,字体样式为:“kt --华文楷体”
4.[代码]PrintChenApplication.java
// 默认使用文件中的字符 华文隶书字体 没有参数或对应的参数不合法
// 包含一个参数且该参数合法 使用该参数的第一个字符
public class PrintChenApplication
{
public enum FontType
{
FONT_LS, // 隶书
FONT_ST, // 宋体
FONT_FS, // 方正舒体
FONT_YY, // 幼圆
FONT_HT, // 黑体
FONT_KT, // 楷体
FONT_UNKNOWN; // 不明类型
}
// 参数1 获取填充字符
public static char getFillChar(String arg)
{
int ch = (int)arg.charAt(0);
if ((ch>0x20) && (ch<0x7F)) // 在此区间为可见字符
return (char)ch;
return '#';
}
// 参数2 获取字体类型
public static FontType getFontType(String arg)
{
if (0==arg.compareToIgnoreCase("ls"))
return FontType.FONT_LS;
else if (0==arg.compareToIgnoreCase("st"))
return FontType.FONT_ST;
else if (0==arg.compareToIgnoreCase("fs"))
return FontType.FONT_FS;
else if (0==arg.compareToIgnoreCase("yy"))
return FontType.FONT_YY;
else if (0==arg.compareToIgnoreCase("ht"))
return FontType.FONT_HT;
else if (0==arg.compareToIgnoreCase("kt"))
return FontType.FONT_KT;
// 默认为 隶书
return FontType.FONT_LS;
}
public static void main(String arg[])
{
char fill_ch = '#';
FontType font_type = FontType.FONT_LS;
int arg_length = arg.length;
if (arg_length==1)
fill_ch = getFillChar(arg[0]);
else if(arg_length>1) 57 {
fill_ch = getFillChar(arg[0]);
font_type = getFontType(arg[1]);
}
boolean read_success = false;
ChenOperator chen = new ChenOperator();
// 读取字符文件
switch (font_type)
{
case FONT_LS :
read_success = chen.readTxtFile("F:\\JavaTest\\jdk\\files\\华文隶书.txt");
break;
case FONT_ST :
read_success = chen.readTxtFile("F:\\JavaTest\\jdk\\files\\宋体.txt");
break;
case FONT_FS :
read_success = chen.readTxtFile("F:\\JavaTest\\jdk\\files\\方正舒体.txt");
break;
case FONT_YY :
read_success = chen.readTxtFile("F:\\JavaTest\\jdk\\files\\幼圆.txt");
break;
case FONT_HT :
read_success = chen.readTxtFile("F:\\JavaTest\\jdk\\files\\黑体.txt");
break;
case FONT_KT :
read_success = chen.readTxtFile("F:\\JavaTest\\jdk\\files\\华文楷体.txt");
break;
default:
read_success = chen.readTxtFile("F:\\JavaTest\\jdk\\files\\华文隶书.txt");
break;
}
// 文件读取失败,直接返回
if (!read_success)
{
System.out.println("读取文件失败!");
return;
}
// 打印出字符
chen.printChars(fill_ch);
}
}
5.[代码]ChenOperator.java
//package PrintChen;
import java.io.*;
//import java.lang.*;
public class ChenOperator
{
public ChenOperator()
{
m_chars = new StringBuffer();
}
// 读取字符文件
public boolean readTxtFile(String path)
{
if (null==path)
return false;
FileReader file_reader = null;
try{
file_reader = new FileReader(path);
}
catch(FileNotFoundException nfe)
{
System.out.println("Not Find the file: "+path+"! Please Check the file whether exists.");27 return false;
}
catch(Exception e)
{
System.out.println("Unknown Exception.");
return false;
}
readChars(file_reader);
try{
file_reader.close();
}
catch(IOException ioe)
{
System.out.println("Close file failed!");
return false;
}
return true;
}
// 打印字符
public void printChars(char c)
{
if (c!='#')
{
int length = m_chars.length();
for (int i=0; i
{
if ('#'==m_chars.charAt(i))
m_chars.setCharAt(i, c);
}
}
System.out.println(m_chars.toString());
}
// 获取字符窜
public String getChars()
{
return m_chars.toString();
}
// --------------------------------------
private void readChars(FileReader rd)
{
int ch = 0;
try{
while(-1!=(ch=rd.read()))
{
m_chars.append((char)ch);
}
}
catch(IOException e)
{
System.out.println("IO Exception.");
return;
}
}
// 字符数据
private StringBuffer m_chars;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。