亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

java中的Io(input與output)操作總結(三)

2019-11-26 16:15:54
字體:
來源:轉載
供稿:網友
說實話,其實我并不是很喜歡Java這門語言,盡管它很強大,有很多現成的API可以調用
但我總感覺它把簡單的事情弄得太過復雜,甚至有時候會讓人迷失
弄不清到底是為了寫出東西,還是為了語言本身
我學習的第一門編程語言是Python,雖然學的不深
但是它的簡單優雅至今令人難忘(呃,其實也就兩年前的事……)
我接觸的第二門語言是C,它給我的感覺是一種純粹,一種高效的靈活
而不是類似java,寫一堆含糊的代碼來實現一個小小的功能
坦白講,如果一個人在學習自己不感興趣的東西,那會很累
支撐我的是,我對移動開發有著異常的向往,對Android也相當喜歡,無奈開發Android的主要語言便是Java
雖然已經學了半年,但是我卻到現在都不能解釋神馬企業級開發到底有哪些東西
我想要的,無非就是把編程當作生活中的一種調情,如果想要某個功能,就去實現,用盡可能簡單的方式
甚至我的猜想是,等到日后發展,編程這門技術如同每個人使用office一般的時候
那么作為程序員的你們是該有多艱辛?
要知道,一個人將自己內心的利益蓋過真正的想法,這是相當可怕的……
因此,每個人都應該用自己喜歡的,覺得高效的方式,做自己最想要做的
好了,說了那么多,我的目的其實只有一個
難道我會告訴你,我根本就搞不懂,也不想搞懂java那些復雜的垃圾語法么?
我只用那些最簡單最好用的東西……
java以前的那些io寫法我就懶得記錄了,主要是System類對IO的支持
如果你覺得我寫的代碼不夠深沉,那你就噴吧,可噴完之后你還能干些什么呢?

現在,步入正題……
這一節我們來講Scanner類和PrintWriter類的用法

Scanner類
實例1:從鍵盤讀取
復制代碼 代碼如下:

import java.util.Scanner;
public class Demo {
public static void main(String[] args ) {
Scanner input = new Scanner(System.in);
System.out.println("請輸出一個整數:");
int i = input.nextInt();
System.out.println("你輸入的整數是:" + i);
}
}

以上演示的只是讀取一個整數,當然還有讀取浮點數和其他數據類型的方法,比較簡單,查看API即可

 
實例2:從字符串讀取

復制代碼 代碼如下:

import java.util.Scanner;
public class Demo {
public static void main(String[] args ) {
//這里的/r/n是換行符,Linux下其實只用/n即可
Scanner input = new Scanner("hello/r/nworld/r/n");
//循環讀取,hasNext()方法和集合框架里面的一樣使
while(input.hasNext()) {
//每次讀取一行,別的讀取方法見API,比較簡單
String s = input.nextLine();
System.out.println(s);
}
}
}


實例3:從文件讀取

復制代碼 代碼如下:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Demo {
public static void main(String[] args ) {
String path = File.separator + "home" + File.separator + "siu" +
File.separator + "work" + File.separator + "demo.txt";
File f = new File(path);
Scanner input = null;
try {
//從文件構造Scanner對象,有可能產生異常
input = new Scanner(f);
while(input.hasNext()) {
String s = input.nextLine();
System.out.println(s);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
input.close();
}
}
}

這里要注意的是,從文件創建Scanner對象得先要有File對象,當然你可以使用匿名對象來創建
此外,還需捕捉異常和關閉文件流


PrintWriter類
實例4:向文件寫入內容

復制代碼 代碼如下:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
public class Demo {
public static void main(String[] args) {
String path = File.separator + "home" + File.separator + "siu" +
File.separator + "work" + File.separator + "demo.txt";
//創建文件對象
File file = new File(path);
PrintWriter p = null;
try {
//此處構造函數還可以傳其他對象,具體參考API文檔
p = new PrintWriter(file);
//向文件寫入一行,此外還有print()和printf()方法
p.println("如果有一天我回到從前");
p.println("回到最原始的我");
p.println("你是否會覺得我不錯");
//刷新流
p.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
p.close();
}
}
}


與PrintWriter類似的還有一個PrintStream類,此處以PrintWriter舉例是因為文本文件具有人為可讀性
而二進制文件(字節模式)則需要使用專門的程序來讀取
可能有人會問:FileOutputStream、 FileWriter都能寫文件,那么為何還需要PrintWriter和PrintStream類
如果細看API文檔,可以知道前者單純的字符寫入流和字節寫入流操作的方式大多用數組進行
對文件的細化處理非常不方便,而PrintWriter和PrintStream則很好的解決了這一問題,提供print()等方法
并且,PrintWriter和PrintStream對于不存在文件對象的情況下會直接創建,如果已有文件對象
它們則會把原有文件給覆蓋掉,卻沒有增加方法

解決這問題也很簡單,再看API文檔
PrintWriter有一個構造方法PrintWriter(Writer out),也就是能夠傳入Writer對象
PrintStream有一個構造方法PrintStream(OutputStream out),也就是能傳入OutputStream對象
因此,我們這樣寫就可以了
new PrintWriter(new FileWriter(file,true))
new PrintStream(new FileOutputStream(file,true))
既能增加數據,也能更高效的處理文件,見如下代碼示范

實例5:實現PrintWriter的數據追加功能

復制代碼 代碼如下:

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class Demo {
public static void main(String[] args) {
String path = File.separator + "home" + File.separator + "siu" +
File.separator + "work" + File.separator + "demo.txt";
//創建文件對象
File file = new File(path);
PrintWriter p = null;
try {
//利用FileWriter方式構建PrintWriter對象,實現追加
p = new PrintWriter(new FileWriter(file,true));
p.println("尼瑪 這一句就是追加的 看到沒");
p.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
//我們來小心翼翼的關閉流,好吧^_^
p.close();
}
}
}

看,這樣就能實現追加效果了,最后一行便是


System類對IO的支持
實例6:System類中的寫入

復制代碼 代碼如下:

import java.io.IOException;
import java.io.OutputStream;
public class Demo {
public static void main(String[] args) {
//別忘了,OutputStream是所有字節寫入流的父類
OutputStream out = System.out;
try {
//寫入數據,只能是數組,所以用getBytes()方法
out.write("Hello,bitch!/r/n".getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
}

注意,此處正好印證了System.out的覆寫行為
如果想學好io,整個io體系中的多態需要了解清楚才能駕輕就熟


實例7:System類中的讀取

復制代碼 代碼如下:

import java.io.IOException;
import java.io.InputStream;
public class Demo {
public static void main(String[] args) {
//別忘了InputStream是所有字節輸入流的父類
InputStream in = System.in;
System.out.print("請輸入文字: ");
byte[] buf = new byte[1024];
int len = 0;
try {
//將輸入的數據保證到數組中,len記錄輸入的長度
len = in.read(buf);
} catch (IOException e) {
e.printStackTrace();
}
//用字符串的方式打印數組中的數據
System.out.println("你的輸入是: " + new String(buf,0,len));
}
}

看,這樣就能從鍵盤獲取內容并且打印了


需要注意的是,這里的數組大小是1024字節
一旦輸入的數據超過1024字節,那么超過的內容將被截取掉,所以此程序有局限性
并且,一個中文占兩個字節,輸入中文有時候會被意外截取掉
相信我,每個程序都是俺親自編寫編譯的~!??!
實例8:利用BufferedReader實現對鍵盤的讀取

復制代碼 代碼如下:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Demo {
public static void main(String[] args) {
BufferedReader b = new BufferedReader(new InputStreamReader(System.in));
System.out.print("請輸入文本:");
try {
String str = b.readLine();
System.out.println("你輸入的是:" + str);
} catch (IOException e) {
e.printStackTrace();
}
//循環讀取方式
/*
while(true) {
System.out.print("請輸入文本:");
String str = null;
try {
str = b.readLine();
} catch (IOException e) {
e.printStackTrace();
}
//如果輸入over就結束循環
if("over".equals(str)) {
break;
}
System.out.println("你輸入的是:" + str);
}
*/
try {
//關閉流,不耐煩的就直接拋
b.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

這樣做相對于上面一個方法的好處是:不用關心數組大小的問題
BufferedReader有一個最重要的方法就是readLine(),每次讀取一行

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品456在线播放狼人| 欧美性高潮在线| 精品久久中文字幕久久av| 精品中文视频在线| 国产97在线|日韩| 性夜试看影院91社区| 琪琪第一精品导航| 欧美丰满老妇厨房牲生活| 大荫蒂欧美视频另类xxxx| 欧美午夜片欧美片在线观看| 日韩欧美极品在线观看| 日韩免费av片在线观看| 精品国产一区二区三区久久狼5月| 福利一区视频在线观看| 亚洲综合日韩在线| 日韩av网址在线| 精品国产拍在线观看| 久久精品精品电影网| 成人精品一区二区三区电影免费| 日韩av大片在线| 欧美中文字幕在线观看| 久久精品视频网站| 欧美裸体男粗大视频在线观看| 国产精品久久久久久久9999| 欧美成人h版在线观看| 亚洲免费av网址| 亚洲网站视频福利| 最好看的2019年中文视频| 97视频在线观看播放| 欧美电影免费看| 欧美亚洲成人免费| 57pao国产成人免费| 国产精品一区二区电影| 91久久精品国产91久久| 国产日韩中文在线| 亚洲福利视频在线| 亚洲女性裸体视频| 一区二区三区视频免费| 欧美高清理论片| 国产精品成人av性教育| 国产在线精品播放| 国产精品久久久久久av下载红粉| 精品国产依人香蕉在线精品| 91欧美精品午夜性色福利在线| 欧美麻豆久久久久久中文| 久久久久成人网| 欧美性xxxx极品高清hd直播| 日韩av在线天堂网| 国产精品av在线播放| 日本精品性网站在线观看| 亚洲成人国产精品| 欧美日韩中文字幕日韩欧美| 亚洲男人的天堂网站| 亚洲欧洲高清在线| 国产亚洲精品久久久久久牛牛| 日本三级久久久| 在线观看日韩欧美| 亚洲自拍偷拍区| 精品女同一区二区三区在线播放| 8x海外华人永久免费日韩内陆视频| 91社影院在线观看| 日本精品va在线观看| 亚洲91av视频| 中文字幕日本欧美| 欧美高清理论片| 精品久久久久久国产| 粉嫩av一区二区三区免费野| 欧美激情精品久久久久久久变态| 日本一区二区不卡| 1769国内精品视频在线播放| 538国产精品视频一区二区| 亚洲欧美变态国产另类| 久久成人一区二区| 亚洲网在线观看| 国产在线日韩在线| 欧美成人手机在线| 亚洲毛片在线免费观看| 亚洲视频在线视频| 久久精品国产亚洲| 国产精品999999| 在线成人一区二区| 国产日韩欧美中文| 色香阁99久久精品久久久| 日韩中文字幕精品| 亚洲免费影视第一页| 国产欧美精品va在线观看| 日韩欧美极品在线观看| 亚洲天堂免费视频| 欧美极品美女视频网站在线观看免费| 国产日产亚洲精品| 6080yy精品一区二区三区| 国产精品直播网红| 日韩电视剧免费观看网站| 亚洲人午夜精品| 亚洲人成亚洲人成在线观看| 亚洲片在线观看| 欧美疯狂做受xxxx高潮| 亚洲国产欧美精品| 日韩在线视频免费观看高清中文| 精品国产精品三级精品av网址| 91av福利视频| 精品动漫一区二区| 曰本色欧美视频在线| 久久精品99国产精品酒店日本| 国产在线观看不卡| 国产精品久久电影观看| 久久久91精品国产一区不卡| 国产成人亚洲综合青青| 日本精品一区二区三区在线播放视频| 日韩中文字幕精品| 亚洲性猛交xxxxwww| 国产一区av在线| 日韩毛片中文字幕| 热久久这里只有精品| 久久午夜a级毛片| 中文字幕亚洲二区| 欧美日韩亚洲激情| 日韩av电影在线免费播放| 亚洲欧美日韩久久久久久| 日韩中文在线中文网在线观看| 欧美大学生性色视频| 亚洲国产一区二区三区四区| 亚洲精品久久在线| 国产一区二区三区在线观看视频| 欧美成人精品三级在线观看| 日韩电影第一页| 2018中文字幕一区二区三区| 欧美日本精品在线| 精品国产欧美成人夜夜嗨| 国产精品成人一区二区| 欧美午夜精品久久久久久久| 57pao精品| 91精品91久久久久久| 欧美猛交免费看| 91视频九色网站| 欧美性受xxxx黑人猛交| 国产98色在线| 国产精品免费久久久| 国产精品成人一区| 在线精品国产成人综合| 国产精品你懂得| 久久中文精品视频| 欧美在线播放视频| 国产美女精品免费电影| 91精品在线看| 欧美做受高潮1| 精品日韩中文字幕| 亚洲第一免费播放区| 在线看欧美日韩| 精品视频—区二区三区免费| 91麻豆桃色免费看| 91免费国产网站| 亚洲乱码一区av黑人高潮| 亚洲欧洲国产一区| 一道本无吗dⅴd在线播放一区| 狠狠躁夜夜躁久久躁别揉| 欧美自拍视频在线观看| 91精品国产综合久久久久久蜜臀| 日韩美女视频免费在线观看| 日韩av资源在线播放| 国产一区二区三区直播精品电影| 久久99国产综合精品女同| 久久精品中文字幕电影| 久久久亚洲欧洲日产国码aⅴ|