導航:首頁 > 編程語言 > 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讀文件字元相關的資料

熱點內容
代碼經過編譯解釋才能執行 瀏覽: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
單片機頻率對比 瀏覽:540