filereader读取文件|问一个java FileReader读取txt文件的问题

filereader读取文件|问一个java FileReader读取txt文件的问题的第1张示图

① 怎么用文件流或者内存流一行一行的读取文本文件

可以通复过FileReader 的readLine()方法实现。制FileReader fr=new FileReader("filename.txt");//获取文件流BufferedReader br = new BufferedReader(fr); //将流整体读取。String str;while((str=br.readLine())!=null){//判断是否是最后一行system.out.print(str);//输出每一行内容。}总结:以上就是通过读取文件中每行内容,之后通过readLine方法进行每一行的内容输出。

② 使用FileReader进行文本文件操作时,read方法的返回值为什么时,表示读取到文件

从输入流中读取字节int read(); //从输入流中读取单个字节数据(0~255),如到输入流末尾则返回-1int read(byte b[]); //读多个字节一、构造方法FileInputStream(String name); //使用给定的文件名创建对象FileInputStream(File file); //使用File对象创建FileInputStream对象二、读取文件使用文件输入流读取文件FileInuputStream istream=new FileInputStream("myfile.dat");或:File f=new File("myfile.dat");FileInputStream istream=new FileInputStream(f);构造方法可能会产生异常IOException,故为了把一个文件输入流对象与一个文件关联起来,需:try { FileInputStream ins=new FileInputStream("myfile.dat");}catch (IOException e){ System.out.println("File read error:"+e);}关闭流java在程序结束时自动关闭所有打开的流,但显式关闭任何打开的流是一个好习惯。close();

③ 如何解决FileReader读文件乱码的问题

你好,问题来出在FileReader读取文件的自过程中,FileReader继承了InputStreamReader,但并没有实现父类中带字符集参数的构造函数,所以FileReader只能按系统默认的字符集来解码,然后在UTF-8 -> GBK -> UTF-8的过程中编码出现损失,造成结果不能还原最初的字符。 原因明确了,这个问题解决起来并不困难,用InputStreamReader代替FileReader,InputStreamReader isr=new InputStreamReader(new FileInputStream(fileName),"UTF-8");这样读取文件就会直接用UTF-8解码,不用再做编码转换。

④ 在读取文件的时候用到filereader,还必须有bufferedreader么

不是必须有BufferedReader,你单独用filereader读也是可以的。只不过通常会用bufferedreader包装一下,这样就可以一次读取一行。主要是因为bufferedreader有一个readLine()方法,可以一次读取一行的内容。

⑤ java中File文件读取的区别和用法

一、File类关注的是文件在磁盘上的存储,而FileInputStream流类关注的是文件的内容。二、关于InputStream和Reader;InputStream提供的是字节流的读取,使用InputStream读取出来的是byte数组,而非文本读取,用Reader读取出来的是char数组或者String,这是InputStream和Reader类的根本区别。InputStreamReader可以将读如stream转换成字符流方式,是reader和stream之间的桥梁.Reader类及其子类提供的字符流的读取char(16位,unicode编码),inputStream及其子类提供字节流的读取byte(8位),所以FileReader类是将文件按字符流的方式读取,FileInputStream则按字节流的方式读取文件;FileInputStream以字节为单位(非unicode)的流处理。字节序列即:二进制数据。与编码无关,不存在乱码问题。FileInputStream:以字节流方式读取;FileReader:把文件转换为字符流读入;三、常用的Reader类FileReader,InputStreamReader,BufferedReaderFileReader与InputStreamReader涉及编码转换,可能在不同的平台上出现乱码现象。(FileInputStream以二进制方式处理,不会出现乱码现象。)FileReader是InputStreamReader类的子类。InputStreamReader的构造函数参数为InputStream和编码方式,当要指定编码方式时,必须使用InputStreamReader类。FileReader构造函数的参数与FileInputStream同,为File对象或表示path的String。1、FileReader的用法FileReaderfr=newFileReader("file.txt");char[]buffer=newchar[1024];intch=0;while((ch=fr.read())!=-1){System.out.print((char)ch);}2、InputStreamReader的用法InputStreamReaderisr=newInputStreamReader(newFileInputStream("file.txt"));while((ch=isr.read())!=-1){System.out.print((char)ch);}3、BufferedReader的用法。BufferedReader由Reader类扩展而来,提供通用的缓冲方式文本读取,而且提供了很实用的readLine,读取分行文本很适合,BufferedReader是针对Reader的,不直接针对文件,也不是只针对文件读取。BufferedReaderbr=newBufferedReader(newInputStreamReader(newFileInputStream("file.txt")));Stringdata=null;while((data=br.readLine())!=null){System.out.println(data);}

⑥ java 中配置文件路径读取使用FileReader和InputStream区别和用法

一、按数据来源(去向)分类:1、是文件: FileInputStream, FileOutputStream, FileReader, FileWriter2、是byte[]:ByteArrayInputStream, ByteArrayOutputStream3、是Char[]: CharArrayReader, CharArrayWriter4、是String: StringBufferInputStream, StringReader, StringWriter5、网络数据流:InputStream, OutputStream, Reader, Writer二、按是否格式化输出分:1、要格式化输出:PrintStream, PrintWriter三、按是否要缓冲分:1、要缓冲:BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter四、按数据格式分:1、二进制格式(只要不能确定是纯文本的): InputStream, OutputStream及其所有带Stream结束的子类2、纯文本格式(含纯英文与汉字或其他编码方式);Reader, Writer及其所有带Reader, Writer的子类五、按输入输出分:1、输入:Reader, InputStream类型的子类2、输出:Writer, OutputStream类型的子类六、特殊需要:1、从Stream到Reader,Writer的转换类:InputStreamReader, OutputStreamWriter2、对象输入输出:ObjectInputStream, ObjectOutputStream3、进程间通信:PipeInputStream, PipeOutputStream, PipeReader, PipeWriter4、合并输入:SequenceInputStream5、更特殊的需要:PushbackInputStream, PushbackReader, LineNumberInputStream, LineNumberReader决定使用哪个类以及它的构造进程的一般准则如下(不考虑特殊需要):首先,考虑最原始的数据格式是什么: 原则四第二,是输入还是输出:原则五第三,是否需要转换流:原则六第1点第四,数据来源(去向)是什么:原则一第五,是否要缓冲:原则三 (特别注明:一定要注意的是readLine()是否有定义,有什么比read, write更特殊的输入或输出方法)第六,是否要格式化输出:原则二Java中Inputstream与Reader的区别Reader支持16位的Unicode字符输出,InputStream支持8位的字符输出。Reader和InputStream分别是I/O库提供的两套平行独立的等级机构,InputStream、OutputStream是用来处理8位元的流,Reader、Writer是用来处理16位元的流。而在JAVA语言中,byte类型是8位的,char类型是16位的,所以在处理中文的时候需要用Reader和Writer。值得说明的是,在这两种等级机构下,还有一道桥梁InputStreamReader、OutputStreamWriter负责进行InputStream到Reader的适配和由OutputStream到Writer的适配。java.io.Reader 和 java.io.InputStream 组成了 Java输入类。Reader 用于读入16位字符,也就是 Unicode编码的字符;而 InputStream 用于读入 ASCII字符和二进制数据。在 Java中,有不同类型的 Reader 输入流对应于不同的数据源:FileReader 用于从文件输入;CharArrayReader 用于从程序中的字符数组输入;StringReader 用于从程序中的字符串输入;PipedReader 用于读取从另一个线程中的 PipedWriter 写入管道的数据。相应的也有不同类型的 InputStream 输入流对应于不同的数据源:FileInputStream,ByteArrayInputStream,StringBufferInputStream,PipedInputStream。另外,还有两种没有对应 Reader 类型的 InputStream 输入流:Socket 用于套接字;URLConnection 用于 URL 连接。这两个类使用 getInputStream() 来读取数据。相应的,java.io.Writer 和 java.io.OutputStream 也有类似的区别。

⑦ java 用filereader读取文件打印到控制台为什么是一竖列

因为System.out.println会换行,要在一行中显示可以用 System.out.print打印。

⑧ java 中 FileReader能读取什么格式的文件

javaFileReader是以Unicode字符为导向的stream,表示以Unicode字符为单位从stream中读取信息。FileReaderfr=newFileReader(file);BufferedReaderbr=newBufferedReader(fr);也就是说,FileReader是直接向上层提供是经过Unicode编译好的内容。所以,FileReader主要针对的是以Unicode为基础的文件,比如JSON,XML,TXT等等。用FileReader读取非Unicode的文件,比如二进制文件,得到的会是乱码,经过处理可以还原原始数据,但是这不是最好的做法。

⑨ java中关于FileReader的read方法!!

FileReader的read() 方法是阻来塞式的,读取源字节或数据块,直到无数据输入。它要么返回数据的下一个字节,当到达文件末尾时,返回-1。这意味着,我们每循环读取一个字节,将其打印为十六进制字符串。顺便说一句,将InputStream转换成字节数组是可选的。另一方面,例2是按字符读取数据。继承自FileReader的InputStreamReader 的read() 方法读取单个字符,并返回该字符,当到达流末尾时,返回-1。

⑩ 问一个java FileReader读取txt文件的问题,能够读取倒数多少条信息吗

publicclassReadFromFile{/***以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。*/(StringfileName){Filefile=newFile(fileName);InputStreamin=null;try{System.out.println("以字节为单位读取文件内容,一次读一个字节:");//一次读一个字节in=newFileInputStream(file);inttempbyte;while((tempbyte=in.read())!=-1){System.out.write(tempbyte);}in.close();}catch(IOExceptione){e.printStackTrace();return;}try{System.out.println("以字节为单位读取文件内容,一次读多个字节:");//一次读多个字节byte[]tempbytes=newbyte[100];intbyteread=0;in=newFileInputStream(fileName);ReadFromFile.showAvailableBytes(in);//读入多个字节到字节数组中,byteread为一次读入的字节数while((byteread=in.read(tempbytes))!=-1){System.out.write(tempbytes,0,byteread);}}catch(Exceptione1){e1.printStackTrace();}finally{if(in!=null){try{in.close();}catch(IOExceptione1){}}}}/***以字符为单位读取文件,常用于读文本,数字等类型的文件*/(StringfileName){Filefile=newFile(fileName);Readerreader=null;try{System.out.println("以字符为单位读取文件内容,一次读一个字节:");//一次读一个字符reader=newInputStreamReader(newFileInputStream(file));inttempchar;while((tempchar=reader.read())!=-1){//对于windows下,这两个字符在一起时,表示一个换行。//但如果这两个字符分开显示时,会换两次行。//因此,屏蔽掉,或者屏蔽。否则,将会多出很多空行。if(((char)tempchar)!=''){System.out.print((char)tempchar);}}reader.close();}catch(Exceptione){e.printStackTrace();}try{System.out.println("以字符为单位读取文件内容,一次读多个字节:");//一次读多个字符char[]tempchars=newchar[30];intcharread=0;reader=newInputStreamReader(newFileInputStream(fileName));//读入多个字符到字符数组中,charread为一次读取字符数while((charread=reader.read(tempchars))!=-1){//同样屏蔽掉不显示if((charread==tempchars.length)&&(tempchars[tempchars.length-1]!='')){System.out.print(tempchars);}else{for(inti=0;i<charread;i++){if(tempchars[i]==''){continue;}else{System.out.print(tempchars[i]);}}}}}catch(Exceptione1){e1.printStackTrace();}finally{if(reader!=null){try{reader.close();}catch(IOExceptione1){}}}}/***以行为单位读取文件,常用于读面向行的格式化文件*/(StringfileName){Filefile=newFile(fileName);BufferedReaderreader=null;try{System.out.println("以行为单位读取文件内容,一次读一整行:");reader=newBufferedReader(newFileReader(file));StringtempString=null;intline=1;//一次读入一行,直到读入null为文件结束while((tempString=reader.readLine())!=null){//显示行号System.out.println("line"+line+":"+tempString);line++;}reader.close();}catch(IOExceptione){e.printStackTrace();}finally{if(reader!=null){try{reader.close();}catch(IOExceptione1){}}}}/***随机读取文件内容*/(StringfileName){RandomAccessFilerandomFile=null;try{System.out.println("随机读取一段文件内容:");//打开一个随机访问文件流,按只读方式randomFile=newRandomAccessFile(fileName,"r");//文件长度,字节数longfileLength=randomFile.length();//读文件的起始位置intbeginIndex=(fileLength>4)?4:0;//将读文件的开始位置移到beginIndex位置。randomFile.seek(beginIndex);byte[]bytes=newbyte[10];intbyteread=0;//一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。//将一次读取的字节数赋给bytereadwhile((byteread=randomFile.read(bytes))!=-1){System.out.write(bytes,0,byteread);}}catch(IOExceptione){e.printStackTrace();}finally{if(randomFile!=null){try{randomFile.close();}catch(IOExceptione1){}}}}/***显示输入流中还剩的字节数*/(InputStreamin){try{System.out.println("当前字节输入流中的字节数为:"+in.available());}catch(IOExceptione){e.printStackTrace();}}publicstaticvoidmain(String[]args){StringfileName="C:/temp/newTemp.txt";ReadFromFile.readFileByBytes(fileName);ReadFromFile.readFileByChars(fileName);ReadFromFile.readFileByLines(fileName);ReadFromFile.readFileByRandomAccess(fileName);}}

未经允许不得转载:山九号 » filereader读取文件|问一个java FileReader读取txt文件的问题

赞 (0)