首页 > Java > java教程 > 正文

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

WBOY
发布: 2023-05-27 16:38:40
转载
2185人浏览过

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

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

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

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

为了读取方便,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.单个读取,如果文件太大不建议使用。

FaceSwapper
FaceSwapper

FaceSwapper是一款AI在线换脸工具,可以让用户在照片和视频中无缝交换面孔。

FaceSwapper 960
查看详情 FaceSwapper
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如何实现字符串和输入流的相互转换的详细内容,更多请关注php中文网其它相关文章!

相关标签:
java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:亿速云网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号