一,首先创建文件showMsg.txt,并设置编码为UTF-8,运行以下代码即可。
package com.clogi.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
public class TestMsg {
public static void main(String[] args) {
FileOutputStream fos = null;
File file = null;
try {
file = new File("E://showMsg.txt");
if(file.exists()){
file.delete();
}
fos = new FileOutputStream(file,true);
byte[] byt = new byte[1024];
StringBuffer strBuf = new StringBuffer();
strBuf.append("盖茨留给职场工作者的十句精言警句:");
strBuf.append("1. 社会充满不公平现象。你先不要想去改造它,只能先适应它。(因为你管不了它)" +
"2. 世界不会在意你的自尊,人们看的只是你的成就。在你没有成就以前,切勿过分强调自尊。(因为你越强调自尊,越对你不利)");
String str = strBuf.toString();
byt = str.getBytes("UTF-8");//这个地方设置往文件中写入的内容的编码格式是UTF-8
fos.write(byt);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(null != fos){
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
二。E://showMsg.txt这个已经创建。现在我们要在程序中读取这个文件里的内容。我写了2种读取方式,虽然都很简单,写下来是为了加深印象。
1.以字符流的形式接收信息
package com.clogi.test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
public class ShowMsg {
/*
* 以字符流的形式接收信息
*/
public static void main(String[] args) {
FileInputStream fis = null;
BufferedReader br = null;
try {
//要从文件中读取内容,其编码格式必须与内容写入时的编码格式一样.
//例如写入时指定的编码是UTF-8,所以在这个地方读取内容的时候也应该是UTF-8.
br = new BufferedReader(new InputStreamReader(
new FileInputStream(new File("E://showMsg.txt")),"UTF-8"));
String strs = null;
String str = null;
StringBuffer sbf = new StringBuffer();
while(br.read()!= -1){
sbf.append(br.readLine());
sbf.append("/n");//换行
}
str = sbf.toString();
byte[] bytes = str.getBytes();//如果在这个地方指定编码格式不起作用。最好是在读取流的时候(例如上面)指定编码。
strs = new String(bytes);
System.out.println(strs);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != fis) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
运行这个main()方法就可以看到控制台上打印信息了。
2.以字节流的形式接收信息。
package com.clogi.test;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class ShowMsgBuf {
/*
* 以字节流的形式接收信息。
* 值得注意的是,你在设置编码格式时必须和要读取的文件的编码一样,这样才不会出现乱码。
*/
public static void main(String[] args) {
BufferedInputStream bis = null;
byte[] by = new byte[10240000];//长度可根据内容长度来适当加大或减小。
try {
bis = new BufferedInputStream(new FileInputStream(new File(
"E://showMsg.txt")));//读取E://bug.txt这个文件。
int byint = -1;
int w = 0;
while ((byint = bis.read()) != -1) {
by[w] = (byte) byint;//将读取的整型转换为byte类型,并将此字节放入字节数组中。
w++;
}
String strmsg = new String(by, "UTF-8");//这步很重要,将字节数组转换为字符串并指定编码。
String returnMsg = strmsg.trim();//去掉字符串后面的空格,以免出现因字节数组未填满而使用空格代替。
System.out.println(returnMsg);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != bis) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
运行这个main()方法也同样可以看到控制台上打印的信息了!