java中怎么用io流读写文件
展开全部 import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class Test14 { public static void main(String[] args) throws IOException { String fPath = "C:/test.txt"; // 读 BufferedReader br = new BufferedReader(new FileReader(fPath)); System.out.println(br.readLine()); br.close();// // 使用后记得关闭 // 写 BufferedWriter bw = new BufferedWriter(new FileWriter(fPath)); bw.write("写一段话到文件里"); bw.flush(); bw.close();// 使用后记得关闭 }}...
java的几种IO流读取文件方式
展开全部一、超类: 字节流: InputStream(读入流) OutputStream(写出流) 字符流: Reader(字符 读入流) Writer (字符写出流)二、文件操作流 字节流: FileInputStream ,FileOutputStream 字符流: FileReader, FileWriter(用法与字节流基本相同,不写)//1.指定要读 的文件目录及名称File file =new File("文件路径");//2.创建文件读入流对象FileInputStream fis =new FileInputStream(file);//3.定义结束标志,可用字节数组读取int i =0 ;while((i = fis.read())!=-1){//i 就是从文件中读取的字节,读完后返回-1}//4.关闭流fis.close();//5.处理异常//1.指定要写到的文件目录及名称File file =new File("文件路径");//2.创建文件读入流对象FileOutputStream fos =new FileOutputStream(file);//3.定义结束标志fos.write(要写出的字节或者字节数组);//4.刷新和关闭流fos.flush();fos.close();//5.处理异常三、缓冲流: 字节缓冲流: BufferedInputStream,BufferedOutputStream 字符缓冲流:BufferedReader ,BufferedWriter缓冲流是对流的操作的功能的加强,提高了数据的读写效率。
既然缓冲流是对流的功能和读写效率的加强和提高,所以在创建缓冲流的对象时应该要传入要加强的流对象。
//1.指定要读 的文件目录及名称File file =new File("文件路径");//2.创建文件读入流对象FileInputStream fis =new FileInputStream(file);//3.创建缓冲流对象加强fis功能BufferedInputStream bis =new BufferedInputStream(fis);//4.定义结束标志,可用字节数组读取int i =0 ;while((i = bis.read())!=-1){//i 就是从文件中读取的字节,读完后返回-1}//5.关闭流bis.close();//6.处理异常//1.指定要写到的文件目录及名称File file =new File("文件路径");//2.创建文件读入流对象FileOutputStream fos =new FileOutputStream(file);//3.创建缓冲流对象加强fos功能BufferedOutputStream bos=new BufferedOutputStream(fos);//4.向流中写入数据bos.write(要写出的字节或者字节数组);//5.刷新和关闭流bos.flush();bos.close();//6.处理异常四、对象流ObjectInputStream ,ObjectOutputStream不同于以上两种类型的流这里只能用字节对对象进行操作原因可以看上篇的编码表比照原理ObjectOutputStream对象的序列化:将java程序中的对象写到本地磁盘里用ObjectOutputStream eg:将Person类的对象序列化到磁盘创建Person类注1:此类要实现Serializable接口,此接口为标志性接口注2:此类要有无参的构造函数注3:一旦序列化此类不能再修改class Person implements Serializable{public Person(){}}2.创建对象流对象注:要增强功能可以将传入文件缓冲流ObjectOutputStream oos =new ObjectOutputStream(new FileOutputStream(new File("文件路径")));3.写入对象 ,一般会将对象用集合存储起来然后直接将集合写入文件List list =new ArrayList();list.add(new Person());...(可以添加多个)oos.writeObject(list);4.关闭流,处理异常oos.flush();oos.close();五、转换流:这类流是用于将字符转换为字节输入输出,用于操作字符文件,属于字符流的子类,所以后缀为reader,writer;前缀inputstream,outputstream;注 :要传入字节流作为参赛InputStreamReader: 字符转换输出流OutputStreamWriter:字符转换输入流//1.获取键盘输入的字节流对象inInputStream in =Stream.in; /*2.用转换流将字节流对象转换为字符流对象,方便调用字符缓冲流的readeLine()方法*/InputStreamReader isr =new InputStreamReader(in);/*5.创建字符转换输出流对象osw,方便把输入的字符流转换为字节输出到本地文件。
*/OutputStreamWriter osw =new OutputStreamWriter(newFileOutputStream(new File("文件名"))); /*3.现在isr是字符流,可以作为参数传入字符缓冲流中*/BufferedReader br =new BufferedReader(isr);/*4.可以调用字符缓冲流br的readLine()方法度一行输入文本*/String line =null;while((line =br.readLine()){osw.write(line);//osw是字符流对象,可以直接操作字符串}注:InputStreamReader isr =new InputStreamReader(new "各种类型的字节输入流都行即是:后缀为InputStream就行");OutputStreamWriter osw =new OutputStreamWriter(new"后缀为OutputStream就行"); 六、区别记忆1.对象流是可以读写几乎所有类型的只要是对象就行,而字节字符流,只能读写单个字节字符或者字节字符数组,以上没有读写字节字符数组的;注意对象流只有字节流!2.字符和字节循环读入的结束条件int i=0; (i =fis.read())!=-1用字符数组复制文件(fr 读入流 ,fw写出流),字节流也是相同的用法int i = 0; char[] c = new char[1024];while((i = fr.reade()) !=-1)){fw.write(c,0,i);}1234563.对象流里面套缓冲流的情景: new ObjectInputStream(new BufferedInputStream(new FileInputStream(new File(“文件路径”))));4.记忆流及其功能的方法:前缀表示功能,后缀表示流的类型;比如说FileInputStream 前缀:File,表示操作的磁盘,后缀:intp...
java的io读文件中,什么叫高低八位,什么叫高24位,求指点
展开全部 一个字节(Byte)是8位(bit),其中的“8位”指的是8位2进制数。
一个int类型的变量能存放4Byte,也就是能存放32bit二进制数,而一个32位二进制数中权值最大的24位就是高24位,举个十进制的例子:12345678,在这个八位数中1234就是高4位,5678就是低4位。
如果有一个16位的二进制数:1111000010101010,那么前面的11110000就是高八位,后面的10101010就是低八位。
0xff是一个16进制的表示,“ff”是一个16进制数化成二进制数就是(11111111),“&”是按位与符号,当一个32位二进制数与一个8位二进制数11111111按位与时,这个32位二进制数的高24位都会变成0,低8位会保持原来的数值(因为高24位中的每一位都是与0相与,当然都是0了,而低8位都是与1相与,所以会保持原值)。
...
java 读取office文档
OFFICE文档使用POI控件,PDF可以使用PDFBOX0.7.3控件,完全支持中文,用XPDF也行,不过感觉PDFBOX比较好,而且作者也在更新。
水平有限,万望各位指正WORD:import org.apache.lucene.document.Document;import org.apache.lucene.document.Field;import org.apache.poi.hwpf.extractor.WordExtractor;import java.io.File;import java.io.InputStream;import java.io.FileInputStream;import com.search.code.Index;public Document getDocument(Index index, String url, String title, InputStream is) throws DocCenterException {String bodyText = null;try {WordExtractor ex = new WordExtractor(is);//is是WORD文件的InputStream bodyText = ex.getText();if(!bodyText.equals("")){index.AddIndex(url, title, bodyText);}}catch (DocCenterException e) {throw new DocCenterException("无法从该Mocriosoft Word文档中提取内容", e);}catch(Exception e){e.printStackTrace();}}return null;}Excel:import org.apache.lucene.document.Document;import org.apache.lucene.document.Field;import org.apache.poi.hwpf.extractor.WordExtractor;import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFCell; import java.io.File;import java.io.InputStream;import java.io.FileInputStream;import com.search.code.Index;public Document getDocument(Index index, String url, String title, InputStream is) throws DocCenterException {StringBuffer content = new StringBuffer();try{HSSFWorkbook workbook = new HSSFWorkbook(is);//创建对Excel工作簿文件的引用 for (int numSheets = 0; numSheets这样可以么?
Java中如何用I/O流读取一个Word文档的内容
1. 通过流来读取,例如:TextFileForm fileForm = (TextFileForm) form; FormFile formFile = fileForm.getTxtFile(); if (formFile.getFileData().length == 0) { response.setCharacterEncoding("gb2312"); response.getWriter().write(""); } InputStream in = formFile.getInputStream(); WordExtractor extractor = new WordExtractor(); String str = extractor.extractText(in);这段代码就是负责读取word的
java读取word文件的问题
请贴出代码,谢谢。
请关闭输入流,释放资源,谢谢。
调用close()方法。
其他貌似没有发现什么问题。
public static String run(String filename){WordExtractor extractor=null;String text=null;try{FileInputStream in = new FileInputStream (filename);extractor = new WordExtractor();text=extractor.extractText(in);}catch(Exception ex){//logreturn null;}return text;}public static void main(String[] args){try{FileOutputStream out=new FileOutputStream("result.txt");out.write(WordProcess.run(args[0]).getBytes());out.flush();out.close();}catch(Exception ex){System.out.println(ex.toString());}}看看这个。
模范这样写,试试看。
这个代码我试过,没问题,如果这样写还是有问题,那就不是代码的问题了。
java解析word文档有哪些方法
展开全部 java读取word文档时,虽然网上介绍了很多插件poi、java2Word、jacob、itext等等,poi无法读取格式(新的API估计行好像还在处于研发阶段,不太稳定,做项目不太敢用);java2Word、jacob容易报错找不到注册,比较诡异,我曾经在不同的机器上试过,操作方法完全一致,有的机器不报错,有的报错,去他们论坛找高人解决也说不出原因,项目部署用它有点玄;itxt好像写很方便但是我查了好久资料没有见到过关于读的好办法。
经过一番选择还是折中点采用rtf最好,毕竟rtf是开源格式,不需要借助任何插件,只需基本IO操作外加编码转换即可。
rtf格式文件表面看来和doc没啥区别,都可以用word打开,各种格式都可以设定。
----- 实现的功能:读取rtf模板内容(格式和文本内容),替换变化部分,形成新的rtf文档。
----- 实现思路:模板中固定部分手动输入,变化的部分用$info$表示,只需替换$info$即可。
1、采用字节的形式读取rtf模板内容2、将可变的内容字符串转为rtf编码3、替换原文中的可变部分,形成新的rtf文档主要程序如下:public String bin2hex(String bin) {char[] digital = "0123456789ABCDEF".toCharArray();StringBuffer sb = new StringBuffer("");byte[] bs = bin.getBytes();int bit;for (int i = 0; i > 4;sb.append("\\'");sb.append(digital[bit]);bit = bs[i] & 0x0f;sb.append(digital[bit]);}return sb.toString(); }public String readByteRtf(InputStream ins, String path){ String sourcecontent =""; try{ ins = newFileInputStream(path); byte[] b= new byte[1024];if (ins == null) {System.out.println("源模板文件不存在");}int bytesRead = 0;while (true) {bytesRead = ins.read(b, 0, 1024); // return final read bytescountsif(bytesRead == -1) {// end of InputStreamSystem.out.println("读取模板文件结束");break;}sourcecontent += new String(b, 0, bytesRead); // convert to stringusing bytes} }catch(Exception e){ e.printStackTrace(); } return sourcecontent ;}以上为核心代码,剩余部分就是替换,从新组装java中的String.replace(oldstr,newstr);方法可以实现,在这就不贴了。
源代码部分详见附件。
运行源代码前提:c盘创建YQ目录,将附件中"模板.rtf"复制到YQ目录之下,运行OpreatorRTF.java文件即可,就会在YQ目录下生成文件名如:21时15分19秒_cheney_记录.rtf的文件。
package com;import java.io.File;import java.io.FileInputStream;import java.io.FileWriter;import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;import java.text.SimpleDateFormat;import java.util.Date;public class OperatorRTF {public String strToRtf(String content){char[] digital = "0123456789ABCDEF".toCharArray();StringBuffer sb = new StringBuffer("");byte[] bs = content.getBytes();int bit;for (int i = 0; i > 4;sb.append("\\'");sb.append(digital[bit]);bit = bs[i] & 0x0f;sb.append(digital[bit]);}return sb.toString();}public String replaceRTF(String content,String replacecontent,intflag){String rc = strToRtf(replacecontent);String target = "";if(flag==0){target = content.replace("$timetop$",rc);}if(flag==1){target = content.replace("$info$",rc);}if(flag==2){target = content.replace("$idea$",rc);}if(flag==3){target = content.replace("$advice$",rc);}if(flag==4){target = content.replace("$infosend$",rc);}return target;}public String getSavePath() {String path = "C:\\YQ";File fDirecotry = new File(path);if (!fDirecotry.exists()) {fDirecotry.mkdirs();}return path;}public String ToSBC(String input){char[] c =input.toCharArray();for (int i =0; i < c.length; i++){if (c[i] == 32){c[i] = (char) 12288;continue;}if (c[i] < 127){c[i] = (char) (c[i] + 65248);}}return newString(c);}public void rgModel(String username, String content) {// TODO Auto-generated method stubDate current=new Date();SimpleDateFormat sdf=new java.text.SimpleDateFormat("yyyy-MM-ddHH:mm:ss");String targetname = sdf.format(current).substring(11,13) + "时";targetname += sdf.format(current).substring(14,16) + "分";targetname += sdf.format(current).substring(17,19) + "秒";targetname += "_" + username +"_记录.rtf";String strpath = getSavePath();String sourname = strpath+"\\"+"模板.rtf";String sourcecontent = "";InputStream ins = null;try{ins = new FileInputStream(sourname);byte[] b = new byte[1024];if (ins == null) {System.out.println("源模板文件不存在");}int bytesRead = 0;while (true) {bytesRead = ins.read(b, 0, 1024); // return final read bytescountsif(bytesRead == -1) {// end of InputStreamSystem.out.println("读取模板文件结束");break;}sourcecontent += ...
java io怎么读取文件并输出到控制台上?
java读取word文档时,虽然网上介绍了很多插件poi、java2Word、jacob、itext等等,poi无法读取格式(新的API估计行好像还在处于研发阶段,不太稳定,做项目不太敢用);java2Word、jacob容易报错找不到注册,比较诡异,我曾经在不同的机器上试过,操作方法完全一致,有的机器不报错,有的报错,去他们论坛找高人解决也说不出原因,项目部署用它有点玄;itxt好像写很方便但是我查了好久资料没有见到过关于读的好办法。
经过一番选择还是折中点采用rtf最好,毕竟rtf是开源格式,不需要借助任何插件,只需基本IO操作外加编码转换即可。
rtf格式文件表面看来和doc没啥区别,都可以用word打开,各种格式都可以设定。
----- 实现的功能:读取rtf模板内容(格式和文本内容),替换变化部分,形成新的rtf文档。
----- 实现思路:模板中固定部分手动输入,变化的部分用$info$表示,只需替换$info$即可。
1、采用字节的形式读取rtf模板内容2、将可变的内容字符串转为rtf编码3、替换原文中的可变部分,形成新的rtf文档主要程序如下:public String bin2hex(String bin) {char[] digital = "0123456789ABCDEF".toCharArray();StringBuffer sb = new StringBuffer("");byte[] bs = bin.getBytes();int bit;for (int i = 0; i > 4;sb.append("\\'");sb.append(digital[bit]);bit = bs[i] & 0x0f;sb.append(digital[bit]);}return sb.toString(); }public String readByteRtf(InputStream ins, String path){ String sourcecontent =""; try{ ins = newFileInputStream(path); byte[] b= new byte[1024];if (ins == null) {System.out.println("源模板文件不存在");}int bytesRead = 0;while (true) {bytesRead = ins.read(b, 0, 1024); // return final read bytescountsif(bytesRead == -1) {// end of InputStreamSystem.out.println("读取模板文件结束");break;}sourcecontent += new String(b, 0, bytesRead); // convert to stringusing bytes} }catch(Exception e){ e.printStackTrace(); }
java,编写一个程序,可以读取文件数据
输出流默认就是文件不存在就创建一个为了清楚我直接抛异常了 随机数没有范围和正负之分,不知道你们有没有要求 哪里有问题再问我 public static void main(String[] args) throws Exception{ File f=new File("D://test.txt"); FileWriter fw=new FileWriter(f); Random r=new Random(); int sum=0; for(int i=0;i<100;i++){ int n=r.nextInt(); sum+=n; fw.write(n+" "); } System.out.println("总和:"+sum); fw.close(); }
转载请注明出处51数据库 » java io 读word