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,如果是连续文件,当长度很长时候,可能抛出异常。


本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/178137,如需转载请自行联系原作者
相关文章
|
11月前
|
人工智能 缓存 监控
使用LangChain4j构建Java AI智能体:让大模型学会使用工具
AI智能体是大模型技术的重要演进方向,它使模型能够主动使用工具、与环境交互,以完成复杂任务。本文详细介绍如何在Java应用中,借助LangChain4j框架构建一个具备工具使用能力的AI智能体。我们将创建一个能够进行数学计算和实时信息查询的智能体,涵盖工具定义、智能体组装、记忆管理以及Spring Boot集成等关键步骤,并展示如何通过简单的对话界面与智能体交互。
3603 1
|
11月前
|
SQL JSON Java
告别字符串拼接:用Java文本块优雅处理多行字符串
告别字符串拼接:用Java文本块优雅处理多行字符串
633 108
|
SQL JSON Java
告别拼接噩梦:Java文本块让多行字符串更优雅
告别拼接噩梦:Java文本块让多行字符串更优雅
999 82
|
11月前
|
人工智能 Java API
Java AI智能体实战:使用LangChain4j构建能使用工具的AI助手
随着AI技术的发展,AI智能体(Agent)能够通过使用工具来执行复杂任务,从而大幅扩展其能力边界。本文介绍如何在Java中使用LangChain4j框架构建一个能够使用外部工具的AI智能体。我们将通过一个具体示例——一个能获取天气信息和执行数学计算的AI助手,详细讲解如何定义工具、创建智能体并处理执行流程。本文包含完整的代码示例和架构说明,帮助Java开发者快速上手AI智能体的开发。
3552 8
|
10月前
|
人工智能 监控 Java
Java与AI智能体:构建自主决策与工具调用的智能系统
随着AI智能体技术的快速发展,构建能够自主理解任务、制定计划并执行复杂操作的智能系统已成为新的技术前沿。本文深入探讨如何在Java生态中构建具备工具调用、记忆管理和自主决策能力的AI智能体系统。我们将完整展示从智能体架构设计、工具生态系统、记忆机制到多智能体协作的全流程,为Java开发者提供构建下一代自主智能系统的完整技术方案。
1125 4
|
10月前
|
Java Unix Go
【Java】(8)Stream流、文件File相关操作,IO的含义与运用
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。!但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。
370 1
|
自然语言处理 Java Apache
在Java中将String字符串转换为算术表达式并计算
具体的实现逻辑需要填写在 `Tokenizer`和 `ExpressionParser`类中,这里只提供了大概的框架。在实际实现时 `Tokenizer`应该提供分词逻辑,把输入的字符串转换成Token序列。而 `ExpressionParser`应当通过递归下降的方式依次解析
529 14
|
监控 Java API
Java语言按文件创建日期排序及获取最新文件的技术
这段代码实现了文件创建时间的读取、文件列表的获取与排序以及获取最新文件的需求。它具备良好的效率和可读性,对于绝大多数处理文件属性相关的需求来说足够健壮。在实际应用中,根据具体情况,可能还需要进一步处理如访问权限不足、文件系统不支持某些属性等边界情况。
530 14
|
存储 Java 编译器
深入理解Java虚拟机--类文件结构
本内容介绍了Java虚拟机与Class文件的关系及其内部结构。Class文件是一种与语言无关的二进制格式,包含JVM指令集、符号表等信息。无论使用何种语言,只要能生成符合规范的Class文件,即可在JVM上运行。文章详细解析了Class文件的组成,包括魔数、版本号、常量池、访问标志、类索引、字段表、方法表和属性表等,并说明其在Java编译与运行过程中的作用。
364 0