十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
可以通過“FileOutputStream”(此時(shí)指定編碼格式即可)創(chuàng)建文件實(shí)例,之后過“OutputStreamWriter”流的形式進(jìn)行存儲(chǔ),舉例:
創(chuàng)新互聯(lián)建站基于成都重慶香港及美國等地區(qū)分布式IDC機(jī)房數(shù)據(jù)中心構(gòu)建的電信大帶寬,聯(lián)通大帶寬,移動(dòng)大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)服務(wù)器托管報(bào)價(jià),主機(jī)托管價(jià)格性價(jià)比高,為金融證券行業(yè)成都移動(dòng)機(jī)房托管,ai人工智能服務(wù)器托管提供bgp線路100M獨(dú)享,G口帶寬及機(jī)柜租用的專業(yè)成都idc公司。
OutputStreamWriter
pw
=
null;//定義一個(gè)流
pw
=
new
OutputStreamWriter(new
FileOutputStream(“D:/test.txt”),"GBK");//確認(rèn)流的輸出文件和編碼格式,此過程創(chuàng)建了“test.txt”實(shí)例
pw.write("我是要寫入到記事本文件的內(nèi)容");//將要寫入文件的內(nèi)容,可以多次write
pw.close();//關(guān)閉流
備注:文件流用完之后必須及時(shí)通過close方法關(guān)閉,否則會(huì)一直處于打開狀態(tài),直至程序停止,增加系統(tǒng)負(fù)擔(dān)。
主要分response的字節(jié)字符輸出流和request接受中文參數(shù)doGet(),doPost()的設(shè)置四種.以及從服務(wù)器下載文件到瀏覽器的編碼問題.
都是我學(xué)習(xí)java時(shí)總結(jié)的,希望能幫到你.
response的字節(jié)輸出流:
// 設(shè)置瀏覽器默認(rèn)打開的時(shí)候采用的字符集編碼
response.setHeader("Content-Type", "text/html;charset=UTF-8");
// 設(shè)置中文轉(zhuǎn)成字節(jié)數(shù)組的時(shí)候取出的編碼
response.getOutputStream().write("如果不設(shè)置編碼,這里就是亂碼".getBytes("UTF-8"));
response的字符輸出流:
//設(shè)置瀏覽器默認(rèn)打開的時(shí)候采用的字符集編碼,response的字符流的緩沖區(qū)的編碼.
response.setContentType("text/html;charset=UTF-8");
response.getWriter().println("中文");
request的doGet()編碼解決:
String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");
System.out.println("GET方式:"+name);
request的doPost()編碼解決:
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
System.out.println("POST方式:"+name);
下載文件時(shí)瀏覽器編碼問題:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1.接收參數(shù)
String filename = new String(request.getParameter("filename").getBytes("ISO-8859-1"),"UTF-8");
System.out.println(filename);
// 2.完成文件下載:
// 2.1設(shè)置Content-Type頭(獲取文件的mime類型)
String type = this.getServletContext().getMimeType(filename);
//設(shè)置文件的mime類型
response.setHeader("Content-Type", type);
// 2.3web項(xiàng)目文件的絕對路徑
String realPath = this.getServletContext().getRealPath("/download/"+filename);
// 獲得瀏覽器的類型處理中文文件的亂碼問題.(User-Agent:服務(wù)器收到客戶端版本之類的一些信息)
String agent = request.getHeader("User-Agent");
System.out.println(agent);
if(agent.contains("Firefox")){
filename = base64EncodeFileName(filename);
}else{
//IE谷歌編碼
filename = URLEncoder.encode(filename,"UTF-8");
}
// 2.2設(shè)置Content-Disposition頭(固定寫法,讓瀏覽器必須下載,不能直接打開)
response.setHeader("Content-Disposition", "attachment;filename="+filename);
//獲得文件
InputStream is = new FileInputStream(realPath);
// 獲得response指定的方法獲取輸出流:如果用其他流是直接拷貝而不是下載
OutputStream os = response.getOutputStream();
int len = 0;
byte[] b = new byte[1024];
while((len = is.read(b))!= -1){
os.write(b, 0, len);
}
//響應(yīng)流可以不關(guān),在服務(wù)器做出相應(yīng)后服務(wù)器會(huì)自動(dòng)把response獲得的流關(guān)閉
is.close();
}
//火狐
public static String base64EncodeFileName(String fileName) {
BASE64Encoder base64Encoder = new BASE64Encoder();
try {
return "=?UTF-8?B?"
+ new String(base64Encoder.encode(fileName
.getBytes("UTF-8"))) + "?=";
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
下載JDK
首先我們需要下載java開發(fā)工具包JDK
下載后JDK的安裝根據(jù)提示進(jìn)行,還有安裝JDK的時(shí)候也會(huì)安裝JRE,一并安裝就可以了。
安裝JDK,安裝過程中可以自定義安裝目錄等信息,例如我們選擇安裝目錄為 C:\Program Files (x86)\Java\jdk1.8.0_91。
配置環(huán)境變量
1.安裝完成后,右擊"我的電腦",點(diǎn)擊"屬性",選擇"高級(jí)系統(tǒng)設(shè)置";
2.選擇"高級(jí)"選項(xiàng)卡,點(diǎn)擊"環(huán)境變量";
在"系統(tǒng)變量"中設(shè)置3項(xiàng)屬性,JAVA_HOME,PATH,CLASSPATH(大小寫無所謂),若已存在則點(diǎn)擊"編輯",不存在則點(diǎn)擊"新建"。
變量設(shè)置參數(shù)如下:
變量名:JAVA_HOME
變量值:C:\Program Files (x86)\Java\jdk1.8.0_91 // 要根據(jù)自己的實(shí)際路徑配置
變量名:CLASSPATH
變量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; //記得前面有個(gè)"."
變量名:Path
變量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
JAVA_HOME 設(shè)置
這是 Java 的環(huán)境配置,配置完成后,你可以啟動(dòng) Eclipse 來編寫代碼,它會(huì)自動(dòng)完成java環(huán)境的配置。
注意:如果使用1.5以上版本的JDK,不用設(shè)置CLASSPATH環(huán)境變量,也可以正常編譯和運(yùn)行Java程序。
測試JDK是否安裝成功
1、"開始"-"運(yùn)行",鍵入"cmd";
2、鍵入命令: java -version、java、javac 幾個(gè)命令,出現(xiàn)以下信息,說明環(huán)境變量配置成功;
盡量使用完整的英文描述符,采用適用于相關(guān)領(lǐng)域的術(shù)語,采用大小寫混合使名字可讀。
JAVA代碼規(guī)范:
(1)類名首字母應(yīng)該大寫。字段、方法以及對象(句柄)的首字母應(yīng)小寫。對于所有標(biāo)識(shí)符,其中包含的所有單詞都應(yīng)緊靠在一起,而且大寫中間單詞的首字母。例如:
ThisIsAClassName
thisIsMethodOrFieldName
若在定義中出現(xiàn)了常數(shù)初始化字符,則大寫static final基本類型標(biāo)識(shí)符中的所有字母。這樣便可標(biāo)志出它們屬于編譯期的常數(shù)。Java包(Package)屬于一種特殊情況:它們?nèi)际切懽帜?,即便中間的單詞亦是如此。對于域名擴(kuò)展名稱,如com,org,net或者edu等,全部都應(yīng)小寫(這也是Java1.1和Java1.2的區(qū)別之一)。
(2)為了常規(guī)用途而創(chuàng)建一個(gè)類時(shí),請采取"經(jīng)典形式",并包含對下述元素的定義:equals()
hashCode()
toString()
clone()(implement Cloneable)
implement Serializable
(3)對于自己創(chuàng)建的每一個(gè)類,都考慮置入一個(gè)main(),其中包含了用于測試那個(gè)類的代碼。為使用一個(gè)項(xiàng)目中的類,我們沒必要?jiǎng)h除測試代碼。若進(jìn)行了任何形式的改動(dòng),可方便地返回測試。這些代碼也可作為如何使用類的一個(gè)示例使用。
(4)應(yīng)將方法設(shè)計(jì)成簡要的、功能性單元,用它描述和實(shí)現(xiàn)一個(gè)不連續(xù)的類接口部分。理想情況下,方法應(yīng)簡明扼要。若長度很大,可考慮通過某種方式將其分割成較短的幾個(gè)方法。這樣做也便于類內(nèi)代碼的重復(fù)使用(有些時(shí)候,方法必須非常大,但它們?nèi)詰?yīng)只做同樣的一件事情)。
(5)設(shè)計(jì)一個(gè)類時(shí),請?jiān)O(shè)身處地為客戶程序員考慮一下(類的使用方法應(yīng)該是非常明確的)。然后,再設(shè)身處地為管理代碼的人考慮一下(預(yù)計(jì)有可能進(jìn)行哪些形式的修改,想想用什么方法可把它們變得更簡單)。
(6)使類盡可能短小精悍,而且只解決一個(gè)特定的問題。下面是對類設(shè)計(jì)的一些建議:
一個(gè)復(fù)雜的開關(guān)語句:考慮采用"多形"機(jī)制
數(shù)量眾多的方法涉及到類型差別極大的操作:考慮用幾個(gè)類來分別實(shí)現(xiàn)
許多成員變量在特征上有很大的差別:考慮使用幾個(gè)類
(7)讓一切東西都盡可能地"私有"-private??墒箮斓哪骋徊糠?公共化"(一個(gè)方法、類或者一個(gè)字段等等),就永遠(yuǎn)不能把它拿出。若強(qiáng)行拿出,就可能破壞其他人現(xiàn)有的代碼,使他們不得不重新編寫和設(shè)計(jì)。若只公布自己必須公布的,就可放心大膽地改變其他任何東西。在多線程環(huán)境中,隱私是特別重要的一個(gè)因素-只有private字段才能在非同步使用的情況下受到保護(hù)。
(8)謹(jǐn)惕"巨大對象綜合癥。對一些習(xí)慣于順序編程思維、且初涉OOP領(lǐng)域的新手,往往喜歡先寫一個(gè)順序執(zhí)行的程序,再把它嵌入一個(gè)或兩個(gè)巨大的對象里。根據(jù)編程原理,對象表達(dá)的應(yīng)該是應(yīng)用程序的概念。
如果是修改文件的編碼方式,可以按以下步驟:
選中文件右鍵--Properties--Resource--Text file encoding--選中Other,然后選擇自己想要的編碼格式就可以了。
如果是修改MyEclipse的編碼方式,可以按以下步驟:
菜單欄的Window--Perferences--General--Work Space--Text file encoding--選中Other,然后選擇自己想要的編碼格式就可以了。
將文件打開。另存為,然后下面會(huì)出現(xiàn)一個(gè)編碼格式,自己選擇GB2312即可,不過記事本方式是沒gb2312的,找個(gè)EditPlus或者其他的文本工具,里面就有GB2312
可以選擇,或者在myeclipse里面右鍵文件,點(diǎn)最底下的選擇進(jìn)去也有一個(gè)更換格式的,不過更換了中文會(huì)亂碼得重新寫