您好,欢迎访问一九零五行业门户网

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

字符串和输入流的相互转换在读取网络资源时经常要用到字符串和输入流之间的相互转化,找到了些方法,记录一下。
将字符串转化为输入流,代码如下:
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提供了一种读取字符文件的便捷类。
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提供了一种字符写入的便捷类。
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如何实现字符串和输入流的相互转换的详细内容。
其它类似信息

推荐信息