在读取网络资源时经常要用到字符串和输入流之间的相互转化,找到了些方法,记录一下。
将字符串转化为输入流,代码如下:
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提供了一种字符写入的便捷类。
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速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号