java读取文件写入到word文档中
来源:互联网 发布:杀戮汉化 知乎 编辑:程序博客网 时间:2024/06/06 20:31
今天突然想要看看流对文件的读取写入操作,之前一直没有怎么弄过关于流这方面,最近要做的项目会用到所以看了看别人的东西,现在就简单的发表下心得,希望大家多多提出意见,我们共同进步,一起走上技术巅峰
下面直接上代码,我在代码中加了一些注释,大家可以对照API,查看相应的方法都是怎么用的.如果兄弟有理解不好的还望多多指出,进步是一条我们互相指出毛病的过程
//读取所有的文件
public List<String> fileScan(File file,String postfix){
File []filen=file.listFiles(); //获取改路径名下的所有文件
for(int i=0;i<filen.length;i++)
{
if(filen[i].isFile()){ //检验改路径名表示的文件是否是一个标准文件
if(filen[i].getName().endsWith(postfix)){ //此处可改变
list.add(filen[i].getPath()); //将给抽象的路径名转换为路径名字符串并添加到list集合中
System.out.println(filen[i].getPath());
}
}
else
fileScan(filen[i],postfix); //通过递归找到所有符合条件的对象
}
return list;
}
在上面的方法中我们通过File类中的listFiles()方法,源文件路径名下的所有文件的数组,然后遍历数组,通过判断当前文件是否是标准文件,是否是以我们指定的后缀名为结尾的来筛选出我们想要的文件,然后将读取到的文件的路径抽象名称通过getPath()方法获取到字符串格式的路径名称,
下面来对读取到的文件内容向word文档中进行写入操作
//写入到word文档中
public void writeDoc(List<String> list,String outPath){ //将找到的符合条件的对象集合写入到word文档中
StringBuffer sb=new StringBuffer();
System.out.println("共扫描出"+list.size()+"个文件");
for (int i = 0; i < list.size(); i++) {
try{
File f2=new File(list.get(i).toString());//通过API我们看到new File(String s)中的参数接收的是String类型的
BufferedReader br=new BufferedReader(new FileReader(f2));//通过字符缓冲流读取
String line=br.readLine();//遍历文件中的内容,通过\r或者\n作为每次读取结束的标识
while(line!=null)
{
sb.append(line+"\r\n");
line=br.readLine();
}
File f=new File(outPath);
appendLog(f, sb.toString()+"\n\n\n==========================================================");
br.close();
}
catch(Exception e)
{
e.printStackTrace();
}
sb.replace(0, sb.length(), ""); //清空sb
}
System.out.println("写入完成");
}
在这里使用了流的通道形式,使用了更宽广的BufferReader的来读取相对窄小的FileReader,官方语言来讲这样使得IO的资源消耗降低了,这个时候一定会有人会有疑问为什么呢,大家可以看这里 点击打开链接, readLIine这个方法每次读取到\r或者\n的时候都会结束然后再次重新进行读取,当全部文件读取完毕后,返回null,然后调用我们封装的打印方法
public void appendLog(File log,String newLog)
{
Scanner sc=null;
PrintWriter pw=null;
try{
if(!log.exists())//如果文件不存在,则新建.
{
File parentDir=new File(log.getParent());
if(!parentDir.exists())//如果所在目录不存在,则新建.
parentDir.mkdirs();//创建最外层目录
log.createNewFile();//创建包含改文件名称的所有目录
}
//把要插入的数据放在sc里面
sc=new Scanner(log);
StringBuilder sb=new StringBuilder();
while(sc.hasNextLine())//先读出旧文件内容,并暂存sb中;
{
//把要插入的数据加到文件中
sb.append(sc.nextLine());
sb.append("\r\n");//换行符作为间隔,扫描器读不出来,因此要自己添加
}
sc.close();
pw=new PrintWriter(new FileWriter(log),true);
/*A.*/pw.println(sb.toString());//,写入旧文件内容.
/*B.*/pw.println(newLog);//写入新内容额
}
catch(IOException ex)
{
ex.printStackTrace();
}
finally{
pw.close();
}
}
在进行打印之前我们首先要进行文件和文件住文件夹是否存在,当不存在时通过mkdirs()和createNewFile()来进行主文件夹的创建和创建一个空文件,接下来的就是我们将文件打印到word文件中了
水平有限,希望大家多多指教
- java读取文件写入到word文档中
- 读取word模板,并写入数据到word文件中
- 利用Java读取并写入Word文件
- 利用Java读取并写入Word文件
- 利用Java读取并写入Word文件
- 读取文档-写入ini文件中
- 18_python_练习题——写入文件到word文档中
- 如何把数据库的内容写入到Word文档中
- 如何把数据库的内容写入到Word文档中?
- BLOB读取写入word文件
- Java读取word文档
- java读取word文档
- Java读取word文档
- java读取word文档
- java读取Excel数据,然后写入到txt文件,并批量保存到oracle数据库中
- ASP.NET C#如何读取word,写入word,复制内容到另一个word文档,批量修改文件名
- 怎么用java从文件中读取图片和写入图片到文件里
- java创建文件,并向文件中写入字符串,读取字符串到屏幕
- redis-- find keys
- 微信jsapi获取网络状态接口开发(第七课)
- linux下修改tomcat、apache的端口号并查看版本
- Mybatis缓存机制学习总结
- SpringBoot学习(四)--集成shiro实现基础登陆认证和权限管理
- java读取文件写入到word文档中
- Hibernate之初学总结(1)
- Java获取方法运行时间,并且保留任意位小数
- 介绍两个python库
- 12-16三道题
- 初学C语言
- 1.2.1奇因数代数和
- rails_admin后台数据库美化
- 微信jsapi获取用户地理位置接口开发(第八课)