java流讀寫
『壹』 如何理解java中的流概念
一、概念
Java中對文件的操作是以流的方式進行的。流是Java內存中的一組有序數據序列。Java將數據從源(文件、內存、鍵盤、網路)讀入到內存中,形成了流,然後將這些流還可以寫到另外的目的地(文件、內存、控制台、網路),之所以稱為流,是因為這個數據序列在不同時刻所操作的是源的不同部分。
二、分類
流的分類,Java的流分類比較豐富,剛接觸的人看了後會感覺很暈。流分類的方式很多:
1、按照輸入的方向分,輸入流和輸出流,輸入輸出的參照對象是Java程序。
2、按照處理數據的單位不同分,位元組流和字元流,位元組流讀取的最小單位是一個位元組(1byte=8bit),而字元流一次可以讀取一個字元(1char = 2byte = 16bit)。
3、按照功能的不同分,分節點流和處理流,節點流是直接從一個源讀寫數據的流(這個流沒有經過包裝和修飾),處理流是在對節點流封裝的基礎上的一種流,FileInputStream是一個接點流,可以直接從文件讀取數據,但是BufferedInputStream可以包裝 FileInputStream,使得其有緩沖功能。
其實除了以上三種分類外,還有一些常常聽到的一些分類比如:對象流、緩沖流、壓縮流、文件流等等。其實都是節點流和處理流的子分類。當然你也可以創建新的流類型,只要你需要。
三、流分類的關系
不管流的分類是多麼的豐富和復雜,其根源來自於四個基本的類。這個四個類的關系如下:
位元組流 字元流
輸入流 InputStream Reader
輸出流 OutputStream Writer
<!-- EndFragment-->
四、位元組流和字元流的相互轉換
1、從位元組流到字元流:InputStreamReader、OutputStreamWriter類可以實現。
2、從字元流到位元組流:可以從字元流中獲取char[]數組,轉換為String,然後調用String的API函數getBytes() 獲取到byte[],然後就可以通過ByteArrayInputStream、ByteArrayOutputStream來實現到位元組流的轉換。
『貳』 java中關於文件流的讀寫(Writer Reader)
你好 我剛剛做了個例子 方便你看
class_writer class 這個例子是從 一個文件中讀取數據然後插入了資料庫中 你可以只看讀取與插入的過程 希望能幫到你.
public class writer {
public boolean writ(String str) {
boolean success=false;
str = str.replaceAll(" ", "").replaceAll("\"", "");
String[] strs = str.split(",");
BaseJDBC base = new BaseJDBC();
String ML = "";
Statement stmt;
Connection conn;
ML = "'"+strs[0].replace(" ", "").trim() + "','"
+ strs[1].replace(" ", "").trim() + "','"
+ strs[2].replace(" ", "").trim() + "','"
+ strs[3].replace(" ", "").trim() + "','"
+ strs[4].replace(" ", "").trim()+ "','"
+ strs[5].replace(" ", "").trim()+"','"
+ strs[6].replace(" ", "").trim()+"'";
String query = "INSERT INTO BANK_INFO VALUES(" + ML + ")";
if (!strs[0].equals("參與者行號")) {
try {
conn=base.genConn();
stmt = conn.createStatement();
int num=stmt.executeUpdate(query);
if(num==1)success=true;
stmt.close();
conn.close();
System.out.println();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(e.getMessage());
}
}
return success;
}
//class readingclass
public class reading {
public static void readFileByLines(String fileName) {
File file = new File(fileName);
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
while ((tempString = reader.readLine()) != null) {
writer w=new writer();
try {
tempString.getBytes("utf-8");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if(!w.writ(tempString)){
System.out.println("第"+line+"行出現異常:"+tempString);
}else{
System.out.println("第"+line+"行初始化成功!");
}
line++;
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
}
//1927
public static void main(String[] args) {
// TODO Auto-generated method stub
String fileName = "D:\\BankInfo_20110714094211.csv";
readFileByLines(fileName);
}
『叄』 JAVA 圖書管理系統,怎麼用流讀取TXT文檔在控制台顯示
像這種常用的IO流讀取問題,一般都有人給你封裝好了,你直接拿來用就行。 比如
apache的 common-io jar。使用舉例:
File f = new File("d:\\data.txt");
System.out.println(FileUtils.readFileToString(f)); //讀取成一個字元串
List<String> lines = FileUtils.readLines(f); //每行讀取,把string封裝到list列表裡
怎麼樣很方便吧
『肆』 java 中簡述使用流進行讀寫文本文件的步驟
InputStream
三個基本的讀方法
abstract int read() : 讀取一個位元組數據,並返回讀到的數據,如果返回-1,表示讀到了輸入流的末尾。
int read(byte[] b) : 將數據讀入一個位元組數組,同時返回實際讀取的位元組數。如果返回-1,表示讀到了輸入流的末尾。
int read(byte[] b, int off, int len) :將數據讀入一個位元組數組,同時返回實際讀取的位元組數。如果返回-1,表示讀到了輸入流的末尾。off指定在數組b中存放數據的起始偏移位置;len指定讀取的最大位元組數。
OutputStream
三個基本的寫方法
abstract void write(int b) :往輸出流中寫入一個位元組。
void write(byte[] b) :往輸出流中寫入數組b中的所有位元組。
void write(byte[] b, int off, int len) :往輸出流中寫入數組b中從偏移量off開始的len個位元組的數據。
其它方法
void flush() :刷新輸出流,強制緩沖區中的輸出位元組被寫出。
void close() :關閉輸出流,釋放和這個流相關的系統資源。