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!