Java如何实现字符串和输入流的相互转换

2023-05-30 0 540

字符串和输入流的相互转换

在读取网络资源时经常要用到字符串和输入流之间的相互转化,找到了方法,记录一下

将字符串转化为输入流,代码如下:

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类

构造方法:

  • 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); 通过给定的file对象或者文件路径名构造FileWriter对象,以及是否追加还是覆盖。

常用读取方法

方法名 说明
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);写入一个字符

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.writer(String str); 写入一个字符串

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如何实现字符串和输入流的相互转换的详细内容。

资源下载此资源下载价格为1小猪币,终身VIP免费,请先
由于本站资源来源于互联网,以研究交流为目的,所有仅供大家参考、学习,不存在任何商业目的与商业用途,如资源存在BUG以及其他任何问题,请自行解决,本站不提供技术服务! 由于资源为虚拟可复制性,下载后不予退积分和退款,谢谢您的支持!如遇到失效或错误的下载链接请联系客服QQ:442469558

:本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可, 转载请附上原文出处链接。
1、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
2、本站提供的模板、软件工具等其他资源,均不包含技术服务,请大家谅解!
3、本站提供的资源仅供下载者参考学习,请勿用于任何商业用途,请24小时内删除!
4、如需商用,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
5、本站部分资源存放于百度网盘或其他网盘中,请提前注册好百度网盘账号,下载安装百度网盘客户端或其他网盘客户端进行下载;
6、本站部分资源文件是经压缩后的,请下载后安装解压软件,推荐使用WinRAR和7-Zip解压软件。
7、如果本站提供的资源侵犯到了您的权益,请邮件联系: 442469558@qq.com 进行处理!

猪小侠源码-最新源码下载平台 Java教程 Java如何实现字符串和输入流的相互转换 http://www.20zxx.cn/763208/xuexijiaocheng/javajc.html

猪小侠源码,优质资源分享网

常见问题
  • 本站所有资源版权均属于原作者所有,均只能用于参考学习,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,建议提前注册好百度网盘账号,使用百度网盘客户端下载
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务