1. 程式人生 > >java 輸入輸出流和File簡單解析(附android中文亂碼問題解決)

java 輸入輸出流和File簡單解析(附android中文亂碼問題解決)

java的輸入輸出流是用來幹甚麼的?以下來自百度。點選開啟連結

現在只有檔案輸出輸出流和File的簡單應用,以後再補大笑

輸入輸出不是對機器而言的

輸入輸出是相對於程式來說的。程式執行時是在記憶體中的

輸入是指將硬碟或其他儲存裝置的資料讀入記憶體
輸出是指將記憶體中的資料寫入儲存裝置
所以說輸入流是用來讀取的(從外面向程式裡進),輸出流是用來寫入的(從程式裡向外出)。

而他們的本質就是資料傳輸的媒介或者通道,表示資料的流動序列。

Java所有的I/O機制都是基於資料流進行輸入輸出。並且Java的I/O流提供了讀寫資料的標準方法。

任何Java中表示資料來源的物件都會提供以資料流的方式讀寫它的資料的方法。

File:

File:原始碼註釋如下

An "abstract" representation of a file system entity identified by a
 * pathname. The pathname may be absolute (relative to the root directory
 * of the file system) or relative to the current directory in which the program
 * is running.

即一個使用路徑名來指定的檔案系統實體的“抽象”代表。(樓主的理解是就是一個資源的抽象,代表一個指定路徑下的資源)

這個路徑名可能是一個絕對的(相對於檔案系統的根目錄)或者是相對的對於在這個執行程式的當前目錄。

File.separator windows下是“\” unix下是“/”,考慮跨平臺性可以寫成這樣“E:” +File.separator + "test" +File.separator+"········"

file.mkdir();//只能建立一級資料夾。
file.mkdirs();//功能 會建立多級資料夾。

輸入輸出流:

/**
	 * 輸入輸出流(I/O)操作,路徑可能是絕對路徑也可能是相對路徑
	 * @throws IOException 
	 */
	private void createfile() throws IOException{
		File file = new File("E:\\test");
		if (!file.exists()) {//資料夾不存在
			file.mkdir();//只能建立一級資料夾。
//			file.mkdirs();//功能 會建立多級資料夾
		}
		
		File file2 = new File(file.getAbsoluteFile()+"\\test.txt");
		file2.createNewFile();//建立一個新的檔案
	}
	/**
	 * 不考慮有過濾器的情況,列出此目錄下的所有子目錄即檔名稱
	 */
	private void showallfile(){
		System.out.println(File.separator);//跨平臺
		String stringpath = "E:"+File.separator+"test"+File.separator;
		File file2 =  new File(stringpath);
		String[] name = file2.list();
		String nameString = "";
		for (int i = 0; i < name.length; i++) {
			nameString = nameString + name[i] + "\n";
			area.setText(nameString);
		}
	}
	/**
	 * 考慮有過濾器的情況
	 */
	private void showallfilefilter(){
		String stringPath = "E:" +File.separator + "test";
		File files = new File(stringPath);
		if (!files.exists()) {
			files.mkdirs();
		}
		
		String[] names = files.list(new FilenameFilter() {//在監聽方法裡寫對檔案進行過濾的邏輯
			
			@Override
			public boolean accept(File dir, String name) {
				System.out.println("dir:" + dir + " name:" + name);
				name = name.substring(name.length() -4, name.length());
				return name.indexOf(".txt") != -1;//過濾條件,只返回txt文字檔案
			}
		});
		String name = "";
		for (int i = 0; i < names.length; i++) {
			name = name + names[i] + "\n";
		}
		area.setText(name);
	}
	
	/**
	 * 下面是檔案的寫操作,以下方法只是一種方式,還可以用FileWrite或BufferedWriter來寫入
	 * @throws IOException 
	 */
	String writeParams = "\n"+"哈哈哈哈,成功寫入"+"\n";
	private void writeFile() throws IOException{
		String stringPath = "E:" +File.separator + "test"+File.separator + "text.txt";
		File file = new File(stringPath);
		//定義一個輸出流,從程式向檔案輸出內容
//		FileOutputStream outputStream = new FileOutputStream(file);
		FileOutputStream outputStream = new FileOutputStream(file, true);//追加
		byte[] writeByte =  writeParams.getBytes();
	    outputStream.write(writeByte);//將位元組陣列以流的方式寫入檔案
	    outputStream.flush();
	    outputStream.close();
	}
	/**
	 * 下面是檔案的讀操作,還可以用FileReader或BufferedReader來讀出資料
	 * @throws IOException 
	 */
	private void readFile() throws IOException{
		String stringPath = "E:" +File.separator + "test"+File.separator + "text.txt";
		File file = new File(stringPath);
		//定義一個輸入流,從檔案向程式裡進內容
		FileInputStream inputStream = new FileInputStream(file);
		byte[] bs = new byte[1024];
		while (inputStream.read(bs) != -1) {//將資料以流的方式讀入到位元組陣列中
			String string = new String(bs);
//android中需要這樣處理,因為編碼格式和電腦不一樣而出現中文亂碼
//            String fileContent = new String(bs,"utf-8");
			area.setText(string);
		}
		inputStream.close();
	}


相關推薦

java 輸入輸出File簡單解析android中文亂碼問題解決

java的輸入輸出流是用來幹甚麼的?以下來自百度。點選開啟連結 現在只有檔案輸出輸出流和File的簡單應用,以後再補 輸入輸出不是對機器而言的 輸入輸出是相對於程式來說的。程式執行時是在記憶體中的 輸入是指將硬碟或其他儲存裝置的資料讀入記憶體 輸出是指將記憶體中的資料寫入

JAVA輸入/輸出程式例題檔案目錄、位元組、字元

一.檔案和目錄 1.顯示檔案的基本資訊。 2.顯示目錄的基本資訊。 3.在指定目錄下建立單個檔案。 4.指定目錄下建立多個臨時檔案。 二、位元組流 1.生成ZIP壓縮檔案 2.解壓縮zip檔案 3.生成Excel檔案 4.讀取excel檔案 5.生成PDF檔案 6.讀取P

java的IO輸入輸出異常處理

   1、不管有沒有異常,finally中的程式碼都會執行    2、當try、catch中有return時,finally中的程式碼依然會繼續執行    3、finally是在return後面的表示式運算之後執行的,此時並沒有返回運算之後的值,而是把值儲存起來,不管fi

Java輸入輸出轉載

字符串數組 三種 dir row 接口 jdk1 end get 繼承 看到一篇超清晰的輸入輸出流文章,就轉載一下,膜拜 http://blog.csdn.net/hguisu/article/details/7418161 1.什麽是IO Java中I/O操作

Java 輸入輸出

red 處理 adl 分享圖片 效率 人的 耗時 buffer IE 這篇不是為了系統介紹Java的輸入輸出流機制的,僅為個人筆記 作為Java小菜,每次上網搜別人的Java讀寫文件的程序參考,總覺得一頭霧水,為什麽要聲明這麽多類,規則是什麽,全然分から

Java輸入輸出詳解2

output put 輸入流 基類 inpu reader 讀取 輸入輸出 NPU InputStream/Reader:所有輸入流的基類,只能從中讀取數據; OutputStream/Writer:所有輸出流的基類,只能向其寫入數據。Java輸入輸出流詳解2

Java 輸入/輸出——體系處理

void dso span style output amt nbsp public 用處   關於使用處理流的優勢,歸納起來就是兩點:(1)對於開發人員來說,使用處理流進行輸入/輸出操作更簡單;(2)使用處理流執行效率更高。   下面程序使用PrintStream處理流來

java輸入輸出9:File

File類介紹 File類可以使用檔案路徑字串來建立File例項,該檔案路徑字串既可以是絕對路徑,也可以是相對路徑。File能新建、刪除、重新命名檔案和目錄,File不能訪問檔案內容本身。如果需要訪問檔案內容本身,則需要使用輸入輸出流。 構造方法 (1)File(String

Java 輸入輸出筆記

流的分類 按流的方向 輸入流     InputStream Reader 輸出流     OutputStream Writer 按資料單元 位元組流     位元組流操作的資料單元是8 位的位元組    二進位制資料    InputStream OutputStream 

Java輸入輸出---面試

目錄和檔案操作 關鍵考點:  File類的概念。  如何用File類看來操作目錄和檔案。 答案: Java提供了java.io.File類對目錄和檔案進行操作。主要的操作方法包括:路徑字串構造方法、isDirectory、isFile、createNew

Java輸入輸出

I/O 流即資料傳輸通道。可以使用這條通道把源中的資料傳送給目標。 把輸入流的指向稱做源。程式通過指向源的輸入流讀取源中的資料。 把輸出流的指向叫做目標。程式通過指向目標的輸出流向目標寫資料。 雖然I/O 流經常與磁碟檔案存取有關。但是程式的源和目的地也可以是鍵盤。滑鼠

C語言中的輸入輸出緩衝區重點詳解

導讀: C語言中我們用到的最頻繁的輸入輸出方式就是scanf()與printf()。 scanf(): 從標準輸入裝置(鍵盤)讀取資料,並將值存放在變數中。 printf(): 將指定的文字/字串輸出到標準輸出裝置(螢幕)。注意寬度輸出和精度 輸出控制。 C語言藉助了相應的緩衝區

C++ 輸入輸出檔案輸入輸出

輸出到檔案 #include <iostream> #include <fstream> using namespace std; int i = 100; ofstream file("1.txt"); //檔案輸出物件,檔名

java輸入輸出詳細講解入門經典,詳細講解JAVA中的IO

今天我們開始進入學習 java 中比較讓人頭疼的事, 那就是 I/O 流、多執行緒、網路程式設計。這裡對 I/O 流的一個詳細講解。希望對大家有點用吧。(不看後悔哦) 一、什麼是IO Java中I/O操作主要是指使用Java進行輸入,輸出操作。 Java所有的I/O機制都是基於資料流進行輸入

Java 輸入/輸出

1. 編碼問題 在介紹輸入輸出之前我們先介紹下關於編碼的一些基本知識點,當一個檔案中既有中文字元又有英文字元時,他們在不同的編碼方式下會佔據不同的記憶體: 1. ANSI 中文佔據 2 個位元組的記憶體空間,英文佔據 1 個位元組的記憶體空間。 2. GB

Java輸入輸出詳解

通過資料流、序列化和檔案系統提供系統輸入和輸出。 Java把這些不同來源和目標的資料都統一抽象為資料流。Java語言的輸入輸出功能是十分強大而靈活的,美中不足的是看上去輸入輸出的程式碼並不是很簡潔,因為你往往需要包裝許多不同的物件。 在Java類庫中,IO部分的內容是很龐大的,因為它涉

java實驗8-Java輸入輸出

1 讀寫檔案 【實驗目的】 (1)掌握文字檔案的讀寫方法。 (2)掌握隨機檔案的讀寫方法。 (3)掌握InputStream、OutputStream抽象類的基本使用。 (4)掌握FileInputStream、FileOutputStream、DataInputStrea

Java輸入輸出I/O

第十四天: 目標: ------------------------------------------------------------ 第十四章  Stream I/O and Files, 共 44 個slide(411-455); 知識點:一. 流的概念    

Java標準輸出標準錯誤輸出的重定向

try{ //儲存原輸出流 PrintStream out=System.out; //儲存原錯誤輸出流 PrintStream err=System.err; //建立新的輸出流 PrintStream ps=new PrintStr

Java 輸入 / 輸出

    Java語言定義了許多類負責各種方式的輸入/輸出,這些類都放在 java.io 包中。所有的輸入流類都是抽象類InputStream(位元組輸入流)或抽象類Reader(字元輸入流)的子類;而所有輸出流都是抽象類OutputStream(位元組輸出流)或抽象類Writ