Rumah >Java >javaTutorial >Bagaimana untuk menukar rentetan dan aliran input dalam Java
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 "获取失败"; } } }
Abstraksi java.io.Reader ialah kelas induk bagi semua aksara aliran input dan digunakan untuk membaca kandungan fail
Struktur aliran input aksara:
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(); } } } } }
Kelas abstrak java.io.Writer ialah kelas induk bagi semua strim output aksara dan digunakan untuk menulis data ke fail.
Struktur strim output aksara:
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!