Heim  >  Artikel  >  Java  >  So konvertieren Sie Strings und Eingabestreams in Java

So konvertieren Sie Strings und Eingabestreams in Java

WBOY
WBOYnach vorne
2023-05-27 16:38:401744Durchsuche

Konvertierung zwischen Strings und Eingabestreams

Die Konvertierung zwischen Strings und Eingabestreams wird häufig beim Lesen von Netzwerkressourcen verwendet. Ich habe einige Methoden gefunden und aufgezeichnet.

Konvertieren Sie die Zeichenfolge in einen Eingabestream, der Code lautet wie folgt:

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; 
}

Konvertieren Sie den Eingabestream in eine Zeichenfolge, der Code lautet wie folgt:

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; 
}

Oder die folgende Methode, der Code lautet wie folgt:

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 "获取失败";
        }
    }
}

Zeicheneingabe- und -ausgabestream

Zeicheneingabestream

java.io.Reader-Abstraktion ist die übergeordnete Klasse aller Zeicheneingabestreams, die zum Lesen von Dateiinhalten verwendet wird

Struktur des Zeicheneingabestreams:

So konvertieren Sie Strings und Eingabestreams in Java

Der Einfachheit halber Zum Lesen bietet Java eine Lese-Convenience-Klasse zum Aufnehmen von Zeichendateien.

FileReader-Klasse

Konstruktor:

  • FileReader(File file); Erstellt einen neuen FileReader mit einer Datei, aus der Daten gelesen werden sollen. 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抽象类是所有字符输出流的父类,用于对文件写入数据。

字符输出流结构:

So konvertieren Sie Strings und Eingabestreams in Java

为了写入Java提供了一种字符写入的便捷类。

FileWriter类

构造方法:

  • FileWriter(File file)FileWriter(String fileName); 使用给定的file对象或者给定的文件路径名构造一个FileWriter对象。

  • FileWriter(File file, boolean append)FileWriter(String fileName, boolean append);

FileReader(String fileName); Erstellt einen neuen FileReader mit dem Namen einer Datei, aus der Daten gelesen werden sollen.

Häufig verwendete Lesemethoden: MethodennameBeschreibungint read()liest ein Zeichen und gibt zurück. -1int read(char[] cbuf)Lesen Sie die gelesenen cbuf.length-Zeichen in das char-Array einint read(char[] cbuf, int off, int len)Von diesem Zeicheneingabestream aus gehen Sie zu len Zeichen und lesen Sie in das char ein arrayvoid reset()Stream zurücksetzenboolean ready()Bestimmen Sie, ob Sie bereit sind, diesen Stream zu lesenvoid close ()Schließen Sie den Zeicheneingabestream und lassen Sie ihn los Alle Systemressourcen. Long Skip (Long N) Methode zurücksetzen und mit dem Lesen von Zeichen ab dieser Position beginnen1. Einzellesung, nicht empfohlen, wenn die Datei zu groß ist.
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. Mehrere Zeichen lesen und ausgeben.

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();
			}
		}
	}       
   }
}

Zeichenausgabestream

Die abstrakte Klasse java.io.Writer ist die übergeordnete Klasse aller Zeichenausgabestreams und wird zum Schreiben von Daten in Dateien verwendet. 🎜🎜🎜Struktur des Zeichenausgabestreams: 🎜🎜🎜Wie Java Zeichenfolgen und Eingaben implementiert Gegenseitig Konvertierung von Streams“ />🎜🎜 bietet eine praktische Klasse zum Schreiben von Zeichen, um in Java zu schreiben. 🎜🎜🎜FileWriter-Klasse🎜🎜🎜🎜Konstruktormethode: 🎜🎜🎜🎜🎜<code>FileWriter(File file)</code> und <code>FileWriter(String fileName); </code> verwenden das angegebene Dateiobjekt oder Konstrukte ein FileWriter-Objekt mit dem Dateipfadnamen. 🎜🎜🎜🎜<code>File file, boolean append)</code> und <code>FileWriter(String fileName, boolean append);</code> erstellen ein FileWriter-Objekt aus dem angegebenen Dateiobjekt oder Dateipfadnamen und ob zum Anhängen oder Überschreiben. 🎜🎜🎜🎜🎜Gemeinsame Lesemethoden🎜🎜🎜🎜🎜🎜Methodenname🎜🎜Beschreibung🎜🎜🎜🎜🎜🎜void write(char[] cbuf)🎜🎜Schreiben Sie alle von cbuf angegebenen Zeichenarrays in den Zeichenausgabestream. 🎜🎜🎜 🎜void write(int c)🎜🎜Schreiben Sie ein Zeichen in den Zeichenausgabestream🎜🎜🎜🎜void write(char[] cbuf,int off,int len)🎜🎜Versetzen Sie das Zeichen im cbuf-Array von Amount off auf length len Zeichen werden in diesen Ausgabestream geschrieben. 🎜🎜🎜🎜void write (String str) len wird in diesen Ausgabestream geschrieben. 🎜🎜🎜🎜Abstract void flush()🎜🎜Aktualisieren Sie den aktuellen Ausgabestream und erzwingen Sie das Schreiben aller Zeichendaten🎜🎜🎜🎜abstract void close()🎜🎜Schließen Sie diesen Ausgabestream🎜🎜🎜🎜🎜1.writer(int c) ;Schreibe ein Zeichen🎜rrreee🎜2.writer(String str); Schreibe einen String🎜rrreee

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie Strings und Eingabestreams in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen