导航:首页 > 编程语言 > java读文件字符

java读文件字符

发布时间:2024-12-01 04:20:45

java中几种读取文件字符串的效率哪个比较高

方式一

/**
* 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。
* 当然也是可以读字符串的。
*/
/* 貌似是说网络环境中比较复杂,每次传过来的字符是定长的,用这种方式?*/
public String readString1()
{
try
{
//FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader。
FileInputStream inStream=this.openFileInput(FILE_NAME);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buffer=new byte[1024];
int length=-1;
while( (length = inStream.read(buffer) != -1)
{
bos.write(buffer,0,length);
// .write方法 SDK 的解释是 Writes count bytes from the byte array buffer starting at offset index to this stream.
// 当流关闭以后内容依然存在
}
bos.close();
inStream.close();
return bos.toString();
// 为什么不一次性把buffer得大小取出来呢?为什么还要写入到bos中呢? return new(buffer,"UTF-8") 不更好么?
// return new String(bos.toByteArray(),"UTF-8");
}
}

方式二

// 有人说了 FileReader 读字符串更好,那么就用FileReader吧
// 每次读一个是不是效率有点低了?
private static String readString2()
{
StringBuffer str=new StringBuffer("");
File file=new File(FILE_IN);
try {
FileReader fr=new FileReader(file);
int ch = 0;
while((ch = fr.read())!=-1 )
{
System.out.print((char)ch+" ");
}
fr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("File reader出错");
}
return str.toString();
}

方式三

/*按字节读取字符串*/
/* 个人感觉最好的方式,(一次读完)读字节就读字节吧,读完转码一次不就好了*/
private static String readString3()
{
String str="";
File file=new File(FILE_IN);
try {
FileInputStream in=new FileInputStream(file);
// size 为字串的长度 ,这里一次性读完
int size=in.available();
byte[] buffer=new byte[size];
in.read(buffer);
in.close();
str=new String(buffer,"GB2312");
} catch (IOException e) {
// TODO Auto-generated catch block
return null;
e.printStackTrace();
}
return str;
}

/*InputStreamReader+BufferedReader读取字符串 , InputStreamReader类是从字节流到字符流的桥梁*/
/* 按行读对于要处理的格式化数据是一种读取的好方式 */
private static String readString4()
{
int len=0;
StringBuffer str=new StringBuffer("");
File file=new File(FILE_IN);
try {
FileInputStream is=new FileInputStream(file);
InputStreamReader isr= new InputStreamReader(is);
BufferedReader in= new BufferedReader(isr);
String line=null;
while( (line=in.readLine())!=null )
{
if(len != 0) // 处理换行符的问题
{
str.append("\r\n"+line);
}
else
{
str.append(line);
}
len++;
}
in.close();
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str.toString();
}

㈡ Java读取文件内容(Java读取文件内容为字符串)

JAVA中读取文件(二进制,字符)内容的几种方

JAVA中读取文件内容的方法有很多,比如按字节读取文件内容,按字符读取文件内容,按行读取文件内容,随机读取文件内容等方法,本文就以上方法的具体实现给出代码,需要的可以直接复制使用

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;icharread;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=(fileLength4)?4:0;

//将读文件的开始位置移到beginIndex位置。

randomFile.seek(beginIndex);

byte[]bytes=newbyte[10];

intbyteread=0;

//一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。

//将一次读取的字节数赋给byteread

while((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);

}

}

Java如何读取txt文件的内容?

java读取txt文件内容。可以作如下理解:

首先获得一个文件句柄。Filefile=newFile();file即为文件句柄。两人之间连通电话网络了。接下来可以开始打电话了。

通过这条线路读取甲方的信息:newFileInputStream(file)目前这个信息已经读进来内存当中了。接下来需要解读成乙方可以理解的东西

既然你使用了FileInputStream()。那么对应的需要使用InputStreamReader()这个方法进行解读刚才装进来内存当中的数据

解读完成后要输出呀。那当然要转换成IO可以识别的数据呀。那就需要调用字节码读取的方法BufferedReader()。同时使用bufferedReader()的readline()方法读取txt文件中的每一行数据哈。

package?com.campu;

?

import?java.io.BufferedInputStream;

import?java.io.BufferedReader;

import?java.io.File;

import?java.io.FileInputStream;

import?java.io.InputStreamReader;

import?java.io.Reader;

?

/**

?*?@author?Java团长

?*?H20121012.java

?*?2017-10-29上午11:22:21

?*/

public?class?H20121012?{

????/**

?????*?功能:Java读取txt文件的内容

?????*?步骤:1:先获得文件句柄

?????*?2:获得文件句柄当做是输入一个字节码流,需要对这个输入流进行读取

?????*?3:读取到输入流后,需要读取生成字节流

?????*?4:一行一行的输出。readline()。

?????*?备注:需要考虑的是异常情况

?????*?@param?filePath

?????*/

????public?static?void?readTxtFile(String?filePath){

????????try?{

????????????????String?encoding="GBK";

????????????????File?file=new?File(filePath);

????????????????if(file.isFile()??file.exists()){?//判断文件是否存在

????????????????????InputStreamReader?read?=?new?InputStreamReader(

????????????????????new?FileInputStream(file),encoding);//考虑到编码格式

????????????????????BufferedReader?bufferedReader?=?new?BufferedReader(read);

????????????????????String?lineTxt?=?null;

????????????????????while((lineTxt?=?bufferedReader.readLine())?!=?null){

????????????????????????System.out.println(lineTxt);

????????????????????}

????????????????????read.close();

????????}else{

????????????System.out.println("找不到指定的文件");

????????}

????????}?catch?(Exception?e)?{

????????????System.out.println("读取文件内容出错");

????????????e.printStackTrace();

????????}

?????

????}

?????

????public?static?void?main(String?argv[]){

????????String?filePath?=?"L:\Apache\htdocs\res\20121012.txt";

//??????"res/";

????????readTxtFile(filePath);

????}

?????

?????

?

}

我有一个微信公众号,经常会分享一些Java技术相关的干货文章,还有一些学习资源。

如果你需要的话,可以用微信搜索“Java团长”或者“javatuanzhang”关注。

java中怎样从文件中读取数据?

分为读字节,读字符两种读法x0dx0a◎◎◎FileInputStream字节输入流读文件◎◎◎x0dx0apublicclassMaintest{(String[]args)throwsIOException{x0dx0ax0dx0aFilef=newFile("G:\justforfun\xiangwei.txt");=newFileInputStream(f);x0dx0ax0dx0abyte[]bs=newbyte[1024];x0dx0ax0dx0aintcount=0;x0dx0awhile((count=fin.read(bs))0)x0dx0a{x0dx0ax0dx0aStringstr=newString(bs,0,count);//反复定义新变量:每一次都重新定义新变量,接收新读取的数据x0dx0ax0dx0aSystem.out.println(str);//反复输出新变量:每一次都输出重新定义的新变量x0dx0a}x0dx0afin.close();x0dx0a}x0dx0a}x0dx0ax0dx0a◎◎◎FileReader字符输入流读文件◎◎◎x0dx0apublicclassMaintest{x0dx0apublicstaticvoidmain(String[]args)throwsIOException{x0dx0ax0dx0aFilef=newFile("H:\justforfun\xiangwei.txt");x0dx0ax0dx0aFileReaderfre=newFileReader(f);x0dx0ax0dx0aBufferedReaderbre=newBufferedReader(fre);x0dx0ax0dx0aStringstr="";x0dx0awhile((str=bre.readLine())!=null)//●判断最后一行不存在,为空x0dx0a{x0dx0aSystem.out.println(str);x0dx0a}x0dx0abre.close();x0dx0afre.close();x0dx0ax0dx0a}x0dx0ax0dx0a}

java中在怎么读取文件夹中的内容

以下java程序的作用是将当前目录及其子目录中的.java文件收集到collection.txt文件中,并添加行号,你可以参考一下。

importjava.io.*;

publicclassCollection

{

publicstaticvoidmain(String[]args)throwsException

{

finalStringF=".\collection.txt";

FW=newFileWriter(newFile(F));

Collection.ProcessDirectory(newFile("."));

Collection.FW.flush();

Collection.FW.close();

}

(Filed)throwsException

{

File[]ds=null;

Collection.ProcessJavaFile(d);

ds=d.listFiles(Collection.DFilter);

for(inti=0;ids.length;i++)

{

Collection.ProcessDirectory(ds[i]);

}

}

(Filed)throwsException

{

Stringline=null;

LineNumberReaderlnr=null;

File[]fs=d.listFiles(Collection.FNFilter);

for(inti=0;ifs.length;i++)

{

lnr=newLineNumberReader(newFileReader(fs[i]));

Collection.FW.write(fs[i].getCanonicalPath()+" ");

System.out.println(fs[i].getCanonicalPath());

while(null!=(line=lnr.readLine()))

{

Collection.FW.write(""+lnr.getLineNumber()+""+line+" ");

System.out.println(""+lnr.getLineNumber()+""+line);

}

Collection.FW.write(" ");

System.out.println();

}

}

privatestaticFileWriterFW;

=newFilenameFilter()

{

publicbooleanaccept(Filedir,Stringname)

{

returnname.endsWith(".java");

}

};

=newFileFilter()

{

publicbooleanaccept(Filepathname)

{

returnpathname.isDirectory();

}

};

}

java中怎样从一个文件中读取文件信息

java读取文件路径、所占空间大小等文件消息,主要是使用FileInputStream类来操作,示例如下:

import?java.io.File;

㈢ java怎么读取文件中内容,并每隔5个字符换行,并写入新的文本

importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.OutputStreamWriter;

publicclassApp17{

publicstaticvoidmain(String[]args)throwsIOException{

FilesrcFile=newFile("d:\test.txt");
FileoutFile=newFile("d:\dest.txt");

InputStreamReaderreader=newInputStreamReader(newFileInputStream(srcFile));
OutputStreamWriterwriter=newOutputStreamWriter(newFileOutputStream(outFile));

char[]buffer=newchar[5];

while(reader.read(buffer)!=-1){
System.out.println(buffer);

writer.write(String.valueOf(buffer).trim()+" ");
}

reader.close();

writer.flush();
writer.close();
}
}

㈣ java 怎么读取文件中的字符和数据

JDK版本 1.5
测试结果
result.txt 文件中的内容如下

李明 40:50:60:70:80
姓名:李明 总成绩:300
刘胜 45:55:65:75:85
姓名:刘胜 总成绩:625

不明白+QQ 379821283

代码如下:

package com.rabbit.test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class TestFile {
public static void main(String[] args) throws Exception{
//获得文件输入流 假设目标文件名为data.txt
FileInputStream fin = new FileInputStream("data.txt");
InputStreamReader inR = new InputStreamReader(fin);
BufferedReader bfR = new BufferedReader(inR);
//获得文件输出流 假设目标文件名为resutl.txt 追加方式
FileOutputStream fout = new FileOutputStream("resutl.txt",true);
OutputStreamWriter outW = new OutputStreamWriter(fout);
BufferedWriter bfW = new BufferedWriter(outW);

String temp = "";//临时缓存 保存读取到的每一行记录
String[] tempArr = {};//临时缓存 保存用空格拆分该行记录得到的数组
String name="";//临时缓存 保存姓名
String[] scoreTemp = {};//临时缓存 保存分数串拆分后得到的数组
int totalScore = 0;//临时缓存 总成绩
//开始读文件
while((temp=bfR.readLine())!=null){
//正则表达式拆分读取到的每行 拆分成 姓名+分数串
tempArr = temp.split("[ ]+");
//得到姓名
name = tempArr[0];
//正则表达式拆分分数串得到分数数组
scoreTemp = tempArr[1].split(":");
//循环分数数组 得到总成绩
for(int i=0;i<scoreTemp.length;i++){
totalScore += Integer.parseInt(scoreTemp[i]);
}
//写入结果文件
bfW.write(temp+"\r\n");
bfW.write("姓名:"+name+" 总成绩:"+totalScore+"\r\n");
}
//关闭流
bfR.close();
bfW.close();
}

}

测试正常

阅读全文

与java读文件字符相关的资料

热点内容
手机如何下载google服务器 浏览:259
代码经过编译解释才能执行 浏览:856
bysort命令 浏览:175
delphi调用python 浏览:485
mfc命令 浏览:538
一加应用加密改密码 浏览:580
程序员谎报工作经验 浏览:856
python中的types是什么 浏览:319
索尼的app怎么播放其他音乐 浏览:905
群文件是不是文件夹 浏览:319
新飞冰箱压缩机声音大 浏览:735
python初级工程师 浏览:714
沙发管家怎么没有电视直播app 浏览:670
jdk6u45linux 浏览:169
mac显示路径命令 浏览:874
新浪微博第三方登录php 浏览:988
你进一个app会闪退是怎么回事 浏览:756
加密触发器安全吗 浏览:742
为什么解压后提示要打开应用 浏览:618
比特币程序员 浏览:822