Java字符串与文件相互转换工具

Java字符串与文件相互转换工具
 
常常需要做一些文本和字符串的处理工作:
1、将文件按照指定编码读入到内存字符串中,对字符串进行操作;
2、将一个字符串写入磁盘上的一个文件。
 
频繁的上述操作常常令人厌烦,大量的这种代码充斥在业务逻辑中,导致混乱。在此写一个通用的处理类就很有必要了,下面是一个实现。

 
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import java.io.*;

/**
* 字符串与文件相互转换工具
*
* @author leizhimin 2009-7-14 15:54:18
*/

public class StringFileToolkit {
         private static Log log = LogFactory.getLog(StringFileToolkit. class);

         /**
         * 读取文件为一个内存字符串,保持文件原有的换行格式
         *
         * @param file        文件对象
         * @param charset 文件字符集编码
         * @return 文件内容的字符串
         */

         public static String file2String(File file, String charset) {
                StringBuffer sb = new StringBuffer();
                 try {
                        LineNumberReader reader = new LineNumberReader( new BufferedReader( new InputStreamReader( new FileInputStream(file), charset)));
                        String line;
                         while ((line = reader.readLine()) != null) {
                                sb.append(line).append(System.getProperty( "line.separator"));
                        }
                } catch (UnsupportedEncodingException e) {
                        log.error( "读取文件为一个内存字符串失败,失败原因是使用了不支持的字符编码" + charset, e);
                } catch (FileNotFoundException e) {
                        log.error( "读取文件为一个内存字符串失败,失败原因所给的文件" + file + "不存在!", e);
                } catch (IOException e) {
                        log.error( "读取文件为一个内存字符串失败,失败原因是读取文件异常!", e);
                }
                 return sb.toString();
        }

         /**
         * 将字符串存储为一个文件,当文件不存在时候,自动创建该文件,当文件已存在时候,重写文件的内容,特定情况下,还与操作系统的权限有关。
         *
         * @param text         字符串
         * @param distFile 存储的目标文件
         * @return 当存储正确无误时返回true,否则返回false
         */

         public static boolean string2File(String text, File distFile) {
                 if (!distFile.getParentFile().exists()) distFile.getParentFile().mkdirs();
                BufferedReader br = null;
                BufferedWriter bw = null;
                 boolean flag = true;
                 try {
                        br = new BufferedReader( new StringReader(text));
                        bw = new BufferedWriter( new FileWriter(distFile));
                         char buf[] = new char[1024 * 64];         //字符缓冲区
                         int len;
                         while ((len = br.read(buf)) != -1) {
                                bw.write(buf, 0, len);
                        }
                        bw.flush();
                        br.close();
                        bw.close();
                } catch (IOException e) {
                        flag = false;
                        log.error( "将字符串写入文件发生异常!", e);
                }
                 return flag;
        }

         public static void main(String[] args) {
                String x = file2String( new File( "C:\\a.txt"), "GBK");
                System.out.println(x);

                 boolean b = string2File(x, new File( "C:\\b.txt"));
                System.out.println(b);
        }
}
 
测试结果:
一台服务器到底能带多少台工作站根本无法量化,这要根据工作站配置、网络以及玩游戏的人多还是少等情况而定,甚至于相同的配置不同的技术人员安装出来的系统速度都会不一样。
本文是笔者做无盘的一些经验供初入无盘的新手参考。

true

Process finished with exit code 0
 
注意,在将字符串写入文件中的时候,最好不要用LineNumberReader,如果是连续文件,当长度很长时候,可能抛出异常。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值