>  기사  >  Java  >  Java에서 문자열과 입력 스트림을 변환하는 방법

Java에서 문자열과 입력 스트림을 변환하는 방법

WBOY
WBOY앞으로
2023-05-27 16:38:401794검색

문자열과 입력 스트림 간의 변환

문자열과 입력 스트림 간의 변환은 네트워크 리소스를 읽을 때 자주 사용됩니다. 몇 가지 방법을 찾아 기록했습니다.

문자열을 입력 스트림으로 변환합니다. 코드는 다음과 같습니다.

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 클래스

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에서 문자열과 입력 스트림을 변환하는 방법

为了写入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 nameDescriptionint read()한 문자를 읽고 -1읽지 않음(문자[] cbuf)읽은 cbuf.length 문자를 char 배열로 읽어옵니다.int read(char[] cbuf, int off, int len)이 문자 입력 스트림에서 len 문자로 이동하여 char로 읽습니다. arrayvoid Reset()스트림 재설정boolean Ready()이 스트림을 읽을 준비가 되었는지 확인void close()문자 입력 스트림을 닫고 해제합니다. 모든 시스템 리소스long skim(long n)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가 문자열 및 입력을 구현하는 방법 상호 Conversion of Streams🎜🎜 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제