ネットワークリソースを読み込む際、文字列と入力ストリームの相互変換がよく使われるので、いくつか方法を見つけたので記録しておきます。
文字列を入力ストリームに変換します。コードは次のとおりです。
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(ファイル ファイル);
データを読み取るファイルを指定して、新しい FileReader を作成します。
FileReader(String fileName);
データを読み取るファイルの名前を指定して、新しい FileReader を作成します。
#一般的に使用される読み取り方法:
説明 | |
---|---|
1 文字を読み取り、すべての文字が最後まで到達した場合は -1 を返します | |
読み込んだ cbuf.length 文字を char 配列に読み込みます | |
この文字入力ストリームから len 文字までのオフセットを char 配列に読み取ります | |
ストリームをリセット | |
ストリームを読み取る準備ができているかどうかを判断します | ##void close() |
long Skip(long n) | |
void mark(int readLimit) | |
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); 指定されたファイル オブジェクトまたは指定されたファイル パス名を使用して FileWriter オブジェクトを構築します。
FileWriter(String fileName, boolean append); 指定されたファイル オブジェクトまたはファイルを通じてpathname は FileWriter オブジェクトを構築し、それが追加されるか上書きされるかどうかを示します。
メソッド名
#void write(char[] cbuf) | |
---|---|
# #void write(int c) | 文字出力ストリームに文字を書き込みます |
void write(char[] cbuf,int off,int len ) | cbuf 配列内の文字をオフセット off から長さ len 文字までこの出力ストリームに書き込みます。 |
void write(String str ) | 文字入力ストリームに文字列を書き込みます |
void write(String str, int off, int len) | オフセット off、長さ len 文字列からの str 文字列をこの出力ストリームに書き込みます。 |
Abstract voidlush() | 現在の出力ストリームを更新し、すべての文字データを強制的に書き込みます |
abstract void close () | この出力ストリームを閉じる |
1.writer(int c);文字を書き込む |