经常需要将数据进行持久化,而我们的文件系统是最古老也是最可靠的保存方式。这里就给出一个在JAVA中把字符串保存到文件中的例子。如下:
package test.base; import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; public class TestString { public static void main(String[] args) { TestString test = new TestString(); test.doTest(); } private void doTest() { String content = "begin-好的开始是成功的一半!-end\r\n"; try { content = new String(content.getBytes("UTF-8"), "UTF-8"); } catch (UnsupportedEncodingException ex) { ex.printStackTrace(); return; } System.out.println(content); saveAsFileOutputStream(content); saveAsFileWriter(content); saveAsOutputStreamWriter(content); } private void saveAsFileOutputStream(String content) { String file = "D:/TestStringStream.txt"; FileOutputStream foutput = null; try { foutput = new FileOutputStream(file); foutput.write(content.getBytes("UTF-8")); foutput.write(content.getBytes()); } catch(IOException ex) { ex.printStackTrace(); } finally { try { foutput.flush(); foutput.close(); } catch (IOException ex) { ex.printStackTrace(); } } System.out.println("文件保存成功。" + file); } private void saveAsFileWriter(String content) { String file = "D:/TestStringWriter.txt"; FileWriter fwriter = null; try { fwriter = new FileWriter(file); fwriter.write(content); } catch (IOException ex) { ex.printStackTrace(); } finally { try { fwriter.flush(); fwriter.close(); } catch (IOException ex) { ex.printStackTrace(); } } } private void saveAsOutputStreamWriter(String content) { String file = "D:/TestStringOutputWriter.txt"; BufferedWriter bwriter = null; try { bwriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8")); bwriter.write(content); } catch (IOException ex) { ex.printStackTrace(); } finally { try { bwriter.flush(); bwriter.close(); } catch (IOException ex) { ex.printStackTrace(); } } } } |
例子中的三种方法都可以将字符串的内容保存到指定的文件,在三种方法中,我们可以看到第一种saveAsFileOutputStream与第三种saveAsOutputStreamWriter都会出现一个字符编码“UTF-8”,而第二种saveAsFileWriter里面不会有字符编码,因此它会默认的使用系统的默认编码(中文操作系统gb2312,英文操作系统iso-8859-1,当然还会有其它的默认编码的操作系统)。为了不让保存的文件在各种系统间传递的时候出现乱码,我们就用统一的UTF-8编码,于是,对于需要进行以设置特定编码的方式保存到文件的方法,第一种和第三种是可选的。JAVA中默认的情况下采用的编码方式都是操作系统默认的编码方式,当然也可以在开发平台(Eclipse/JBuilder/NetBean)中手动修改JAVA的默认编码方式。拥有统一的一套字符编码是保证汉字在各种情况下不出现乱码的必要前提条件,所以请一定要注意字符编码。