在讀取網路資源時經常要用到字串和輸入流之間的相互轉化,找到了些方法,記錄一下。
將字串轉換為輸入流,程式碼如下:
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提供了一個讀取字元檔案的便捷類別。
FileReader類別
建構方法:
FileReader(File file);
在給定從中讀取資料的File 的情況下建立一個新FileReader。
FileReader(String fileName);
在給定從中讀取資料的檔案名稱的情況下建立一個新 FileReader。
常用讀取方法:
#方法名稱 | ##說明|
---|---|
讀入一個字符,都到結尾則傳回-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提供了一個字元寫入的便捷類別。
FileWriter類別建構方法:
與FileWriter(String fileName);
使用給定的file物件或給定的檔案路徑名稱建構一個FileWriter物件。
與FileWriter(String fileName, boolean append);
透過給定的file物件或文件路徑名構造FileWriter對象,以及是否追加或覆蓋。
#將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中文網其他相關文章!