首頁 >Java >java教程 >Java如何實作字串和輸入流的相互轉換

Java如何實作字串和輸入流的相互轉換

WBOY
WBOY轉載
2023-05-27 16:38:401814瀏覽

字串和輸入流的相互轉換

在讀取網路資源時經常要用到字串和輸入流之間的相互轉化,找到了些方法,記錄一下。

將字串轉換為輸入流,程式碼如下:

public static InputStream getStringStream(String sInputString){ 
  if (sInputString != null && !sInputString.trim().equals("")){ 
      try{ 
          ByteArrayInputStream tInputStringStream = new ByteArrayInputStream(sInputString.getBytes()); 
          return tInputStringStream; 
      }catch (Exception ex){ 
          ex.printStackTrace(); 
      } 
  } 
  return null; 
}

將輸入流轉換會字串,程式碼如下:

public static String getStreamString(InputStream tInputStream){ 
  if (tInputStream != null){ 
       try{ 
            BufferedReader tBufferedReader = new BufferedReader(new InputStreamReader(tInputStream)); 
            StringBuffer tStringBuffer = new StringBuffer(); 
            String sTempOneLine = new String(""); 
            while ((sTempOneLine = tBufferedReader.readLine()) != null){ 
                tStringBuffer.append(sTempOneLine); 
            } 
           return tStringBuffer.toString(); 
      }catch (Exception ex){ 
           ex.printStackTrace(); 
      } 
  } 
  return null; 
}

或是以下的方法,程式碼如下:

public class StreamTool {
    /**
     * 把输入流的内容转化成字符串
     * @param is
     * @return
     */
    public static String readInputStream(InputStream is){
        try {
            ByteArrayOutputStream baos=new ByteArrayOutputStream();
            int length=0;
            byte[] buffer=new byte[1024];
            while((length=is.read(buffer))!=-1){
                baos.write(buffer, 0, length);
            }
            is.close();
            baos.close();
            //或者用这种方法
            //byte[] result=baos.toByteArray();
            //return new String(result);
            return baos.toString();
        } catch (Exception e) {
            e.printStackTrace();
            return "获取失败";
        }
    }
}

字元輸入與輸出流

字元輸入流

java.io.Reader抽象化是所有字元輸入流的父類,用於讀取檔案內容

字元輸入流結構:

Java如何實作字串和輸入流的相互轉換

為了讀取方便,Java提供了一個讀取字元檔案的便捷類別。

FileReader類別

建構方法:

  • FileReader(File file); 在給定從中讀取資料的File 的情況下建立一個新FileReader。

  • FileReader(String fileName); 在給定從中讀取資料的檔案名稱的情況下建立一個新 FileReader。

常用讀取方法:

##說明#int read()讀入一個字符,都到結尾則傳回-1##int read(char[] cbuf)int read(char[] cbuf, int off , int len)void reset()boolean ready()void close() long skip(long n)void mark(int readLimit)1.單一讀取,如果檔案太大不建議使用。
#方法名稱
將讀取的cbuf.length個字元讀取到char數組中
從此字元輸入流中偏移量off到len個字元讀取到char數組中
重設該流
判斷是否準備要讀取此流
關閉字元輸入流,並釋放所有系統資源
跳過讀取n個字符,並傳回跳過字元的數量
將此輸入流標記,當使用reset方法時就返回到該位置,從此位置開始讀取入字元
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class dome2{
	public static void main(String[] args){
	  File file=new File("D:/../...txt");   //创建file对象
	  FileReader fr=null;
	  
	  try {
		fr=new FileReader(file);
		int c;  
		while((c=fr.read())!=-1) { 
			System.out.print((char)c);  //强制转换成字符
		}
	} catch (FileNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}finally {
		if(fr!=null) {
			try {
				fr.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
   }
}

2.讀取多個字元輸出。

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class dome2{
	public static void main(String[] args){
	  File file=new File("D:/../...txt");   
	  FileReader fr=null;
	  
	  try {
		fr=new FileReader(file);
		char[] c=new char[100];
		int length;
		while((length=fr.read(c))!=-1) {
			System.out.println(new String(c,0,length));  
		}
	} catch (FileNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}finally {
		if(fr!=null) {
			try {
				fr.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
   }
}

字元輸出流

java.io.Writer抽象類別是所有字元輸出流的父類,用於對檔案寫入資料。

字元輸出流結構:

Java如何實作字串和輸入流的相互轉換為了寫入Java提供了一個字元寫入的便捷類別。

FileWriter類別

建構方法:

  • FileWriter(File file)

    FileWriter(String fileName); 使用給定的file物件或給定的檔案路徑名稱建構一個FileWriter物件。

  • FileWriter(File file, boolean append)

    FileWriter(String fileName, boolean append); 透過給定的file物件或文件路徑名構造FileWriter對象,以及是否追加或覆蓋。

常用讀取方法

#方法名稱#void write(char[] cbuf)#void write(int c)#void write(char[] cbuf,int off,int len )void write(String str )void write(String str , int off ,int len)Abstract void flush()abstract void close ()1.writer(int c);寫入一個字元
#將cbuf指定的所有字元陣列寫入到字元輸出流中
寫入一個字元輸出流到字元輸出流
將cbuf數組中的字元從偏移量off到長度為len個字元寫入到此輸出流中。
在字元輸流中寫入一個字串
將str字串從偏移量off,長度為len個字串寫入到此輸出流。
刷新目前輸出流,並強制寫入所有字元資料
關閉此輸出流
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class dome2{
	public static void main(String[] args){
	  File file=new File("D:/../...txt");   //创建file对象
       FileWriter  fw=null;
       
       try {
		fw=new FileWriter(file);
		char c='你';
		fw.write((int)c);
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}finally {
		if(fw!=null) {
			try {
				fw.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}       
   }
}

2.writer( String str); 寫入一個字串

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class dome2{
	public static void main(String[] args){
	  File file=new File("D:/../...txt");   //创建file对象
       FileWriter  fw=null;
       
       try {
		fw=new FileWriter(file);
		String str="你好,java";
		fw.write(str);  //写入一个字符串,等价于write(str,0,str.length);
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}finally {
		if(fw!=null) {
			try {
				fw.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}       
   }
}

以上是Java如何實作字串和輸入流的相互轉換的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除