Rumah  >  Artikel  >  Java  >  Bagaimana untuk menukar rentetan dan aliran input dalam Java

Bagaimana untuk menukar rentetan dan aliran input dalam Java

WBOY
WBOYke hadapan
2023-05-27 16:38:401744semak imbas

Penukaran bersama antara rentetan dan strim input

Apabila membaca sumber rangkaian, penukaran bersama antara rentetan dan strim input sering digunakan.

Tukar rentetan kepada aliran input, kodnya adalah seperti berikut:

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

Tukar strim input kepada rentetan, kodnya adalah seperti berikut:

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

atau kaedah berikut, kodnya adalah seperti berikut :

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

Strim input dan output aksara

Strim input aksara

Abstraksi java.io.Reader ialah kelas induk bagi semua aksara aliran input dan digunakan untuk membaca kandungan fail

Struktur aliran input aksara:

Bagaimana untuk menukar rentetan dan aliran input dalam Java

Untuk kemudahan membaca, Java menyediakan kelas yang sesuai untuk membaca fail aksara.

Kelas FileReader

Pembina:

  • FileReader(File file); Baca daripada yang diberikan Cipta yang baharu FileReader dalam kes data Fail.

  • FileReader(String fileName); Mencipta FileReader baharu diberi nama fail untuk membaca data.

Kaedah bacaan biasa:

方法名 说明
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. Bacaan sekali, tidak disyorkan jika fail terlalu besar.

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. Baca berbilang aksara dan output.

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

Strim output aksara

Kelas abstrak java.io.Writer ialah kelas induk bagi semua strim output aksara dan digunakan untuk menulis data ke fail.

Struktur strim output aksara:

Bagaimana untuk menukar rentetan dan aliran input dalam Java

Java menyediakan kelas kemudahan untuk penulisan aksara.

Kelas FileWriter

Pembina:

  • FileWriter(File file) Gunakan dengan FileWriter(String fileName); Bina a Objek FileWriter daripada objek fail yang diberikan atau nama laluan fail yang diberikan.

  • FileWriter(File file, boolean append) dan FileWriter(String fileName, boolean append); bina objek FileWriter daripada objek fail atau nama laluan fail yang diberikan, dan sama ada untuk menambah atau menulis ganti.

Kaedah bacaan biasa

方法名 说明
void write(char[] cbuf) 将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) 将str字符串从偏移量off,长度为len个字符串写入到此输出流中。
Abstract void flush() 刷新当前输出流,并强制写入所有字符数据
abstract void close() 关闭此输出流

1.writer(int c);Tulis watak

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. penulis(String str); Tulis rentetan

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

Atas ialah kandungan terperinci Bagaimana untuk menukar rentetan dan aliran input dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam