문자열과 입력 스트림 간의 변환은 네트워크 리소스를 읽을 때 자주 사용됩니다. 몇 가지 방법을 찾아 기록했습니다.
문자열을 입력 스트림으로 변환합니다. 코드는 다음과 같습니다.
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 클래스
Constructor:
FileReader(File file);
데이터를 읽을 파일이 주어지면 새 FileReader를 만듭니다. FileReader(File file);
在给定从中读取数据的 File 的情况下创建一个新 FileReader。
FileReader(String fileName);
在给定从中读取数据的文件名的情况下创建一个新 FileReader。
常用读取方法:
方法名 | 说明 |
---|---|
int read() | 读入一个字符,都到结尾则返回-1 |
int read(char[] cbuf) | 将读取的cbuf.length个字符读取到char数组中 |
int read(char[] cbuf, int off, int len) | 从此字符输入流中偏移量off到len个字符读取到char数组中 |
void reset() | 重置该流 |
boolean ready() | 判断是否准备读取此流 |
void close() | 关闭字符输入流,并释放所有系统资源 |
long skip(long n) | 跳过读取n个字符,并返回跳过字符的数量 |
void mark(int readLimit) | 将此输入流标记,当使用reset方法时就返回到该位置,从此位置开始读入字符 |
1.单个读取,如果文件太大不建议使用。
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提供了一种字符写入的便捷类。
FileWriter类
构造方法:
FileWriter(File file)
与 FileWriter(String fileName);
使用给定的file对象或者给定的文件路径名构造一个FileWriter对象。
FileWriter(File file, boolean append)
与 FileWriter(String fileName, boolean append);
FileReader(String fileName);
데이터를 읽을 파일 이름이 지정된 새 FileReader를 만듭니다.
Method name | |
---|---|
int read() | |
을 반환합니다. | 읽지 않음(문자[] cbuf)|
int read(char[] cbuf, int off, int len) | |
void Reset() | |
boolean Ready() | |
void close() | |
long skim(long n) |
void mark(int readLimit )
🎜이 입력 스트림을 표시하고, 방법을 재설정하고 이 위치부터 문자 읽기를 시작하세요🎜🎜🎜🎜🎜1. 단일 읽기, 파일이 너무 큰 경우 권장되지 않습니다. 🎜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. 여러 문자를 읽고 출력합니다. 🎜
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.io.Writer 추상 클래스는 모든 문자 출력 스트림의 상위 클래스이며 파일에 데이터를 쓰는 데 사용됩니다. 🎜🎜🎜문자 출력 스트림 구조: 🎜🎜🎜🎜🎜 Java에 쓰기 위해 문자 쓰기에 편리한 클래스를 제공합니다. 🎜🎜🎜FileWriter 클래스🎜🎜🎜🎜생성자 메서드: 🎜🎜🎜🎜🎜
FileWriter(File file)
및 FileWriter(String fileName)
는 지정된 파일 개체 또는 구성을 사용합니다. 파일 경로명이 주어진 FileWriter 객체. 🎜🎜🎜🎜파일 파일, 부울 추가)
및 FileWriter(String fileName, 부울 추가);
지정된 파일 객체 또는 파일 경로 이름에서 FileWriter 객체를 생성합니다. 추가하거나 덮어쓰려면 🎜🎜🎜🎜🎜일반적인 읽기 방법🎜🎜🎜🎜🎜🎜메서드 이름🎜🎜Description🎜🎜🎜🎜🎜🎜void write(char[] cbuf)🎜🎜cbuf로 지정된 모든 문자 배열을 문자 출력 스트림에 씁니다. 🎜🎜🎜 🎜void write(int c)🎜🎜문자 출력 스트림에 문자 쓰기🎜🎜🎜🎜void write(char[] cbuf,int off,int len)🎜🎜cbuf 배열의 문자를 Amount off에서 길이 len으로 오프셋합니다. 문자가 이 출력 스트림에 기록됩니다. 🎜🎜🎜🎜void write(String str)🎜🎜문자 입력 스트림에 문자열 쓰기🎜🎜🎜🎜void write(String str, int off, int len)🎜🎜오프셋에서 str 문자열 끄기, 길이의 문자열 len이 이 출력 스트림에 기록됩니다. 🎜🎜🎜🎜Abstract void 플러시()🎜🎜현재 출력 스트림을 새로 고치고 모든 문자 데이터를 강제로 씁니다.🎜🎜🎜🎜abstract void close()🎜🎜이 출력 스트림 닫기🎜🎜🎜🎜🎜1.writer(int c) ;문자 쓰기🎜rrreee🎜2.writer(String str);문자 쓰기🎜rrreee위 내용은 Java에서 문자열과 입력 스트림을 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!