本文目錄一覽:
- 1、java如何實現 io流傳輸過來的文件,提示另存為彈出窗口?
- 2、JAVA怎麼用IO流保存一部電影
- 3、JAVA中我想用IO流把伺服器上的文件保存到本機
- 4、java的IO流中可以通過自定義一個數組來存儲數據,為什麼還要使用緩存區呢?
- 5、java中如何通過IO流將稀疏數組寫入磁碟和從磁碟中讀取,整行存,整行取
- 6、java怎麼使用io流讀取一個文件夾裡面
java如何實現 io流傳輸過來的文件,提示另存為彈出窗口?
彈出窗口,我理解為瀏覽器彈出窗口,所以必定有後端伺服器程序,這裡重點說的就是伺服器程序。
第一步:設置Response頭部(最關鍵)
response.setContentType(“application/octet-stream;charset=UTF-8”);
// 設置彈出框提示的文件名
response.addHeader(“Content-Disposition”, “attachment; filename=” + java.net.URLEncoder.encode(fileName, “UTF-8”));
第二步:解析輸入流
// 這裡的in為你的輸入流
BufferedInputStream is = new BufferedInputStream(in);
// 準備緩衝區
byte[] buffer = new byte[4096];
第三步:將輸入流轉換為輸出流
BufferedOutputStream os = new BufferedOutputStream(response.getOutputStream());
int offset = 0;
while((offset = is.read(buffer, 0, 4096) -1) {
os.write(buffer, 0, offset)
}
第四步:關閉輸入輸出流
os.close();
is.close();
JAVA怎麼用IO流保存一部電影
其實原理就是下載電影文件內容至一個IO流中,流最終是可以保存為文件的。
JAVA中我想用IO流把伺服器上的文件保存到本機
理論上講這是不行的!除非你手動進行遠程下載,因為伺服器不能自動操作客戶機,這樣做無異於病毒。
java的IO流中可以通過自定義一個數組來存儲數據,為什麼還要使用緩存區呢?
IO流自定義位元組流的緩衝區:
思路:BufferedInputStream類中read()方法的工作原理
1)先一個一個從位元組流中讀取位元組,讀取一定量(自定義)之後,存儲在一個位元組數組(緩衝區)(FileInputStream.read(byte[] b)),並獲得存儲數量(read方法的返回值)。
2)一個一個位元組返回,返回一個,存儲數量減1,然後指針往後移一位,準備取下一個。
3)如果存儲數量為0 ,代表當前數組中所有數據已經全部取完,此時再來一次讀取(read(byte[] b)),再獲得此次存儲數量。
4)如果存儲數量(即read方法返回-1),代表讀到文件末尾,返回-1。
因此,需要用到以下幾個變數:
讀取的位元組數量,指向數組中準備取哪一個的指針,將要返回的位元組變數。
java中如何通過IO流將稀疏數組寫入磁碟和從磁碟中讀取,整行存,整行取
//寫入磁碟
public static void writ(int sparseArr[][]) {
System.out.println(“寫入磁碟的數據中~~~~~~”);
File file = new File(“E:\\java\\sparseArr.txt”);
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter(file));
if (!file.exists()) {
file.createNewFile();
}
StringBuilder allBuilder = new StringBuilder();
for (int[] rows : sparseArr) {
StringBuilder rowBuilder = new StringBuilder();
for (int item : rows) {
rowBuilder.append(item + “\t”);
}
allBuilder.append(rowBuilder + “\n”);
}
bw.write(String.valueOf(allBuilder));
bw.flush();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//讀取磁碟
public static int[][] read() {
System.out.println(“讀取磁碟的數據中~~~~~~”);
File file = new File(“E:\\java\\sparseArr.txt”);
int[][] sparseArr = null;
try {
BufferedReader br = new BufferedReader(new FileReader(file));
if (!file.exists()) {
file.createNewFile();
}
String row = br.readLine();
String[] s = new String(row).split(“\t”);
sparseArr = new int[Integer.parseInt(s[0])][Integer.parseInt(s[1])];
while ((row = br.readLine()) != null) {
String[] s2 = new String(row).split(“\t”);
sparseArr[Integer.parseInt(s2[0])][Integer.parseInt(s2[1])] = Integer.parseInt(s2[2]);
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
return sparseArr;
}
java怎麼使用io流讀取一個文件夾裡面
使用工具類Properties
工具類有Load()方法 用於載入文件
首先將文件寫成流(輸入)
File file=new File(confPath);
in = new FileInputStream(file);
載入流load(in)如果需要操作則完成具體操作
輸出流並保存文件
out2 = new OutputStreamWriter(new FileOutputStream(confPath),”GBK”);
cp.store(out2);
完成
具體實例代碼
public String updateConfParam(ConfParam cpl) throws IOException {
String error = null;
Properties cp=new Properties();
InputStream in= null;
OutputStreamWriter out1=null;
OutputStreamWriter out2=null;
JSONObject jObj = new JSONObject();
try {
String confPath=validateSystem(cpl.getConfAddress()+”/”+cpl.getConfName());
File file=new File(confPath);
in = new FileInputStream(file);
cp.load(in);
out1=new OutputStreamWriter(new FileOutputStream(confPath+”.bak”),”GBK”);
cp.store(out1);
cpl.setParaOldValue(cp.getProperty(cpl.getParaKey()));
cp.setProperty(cpl.getParaKey(), cpl.getParaValue());
out2 = new OutputStreamWriter(new FileOutputStream(confPath),”GBK”);
cp.store(out2);
jObj.put(“paraOldValue”, cpl.getParaOldValue());
jObj.put(“paraValue”, cpl.getParaValue());
} catch (FileNotFoundException e) {
error=e.getMessage();
} catch (IOException e1) {
error = e1.getMessage();
}
finally{
if(in !=null){
in.close();
}
if(out1 !=null){
out1.close();
}
if(out2 !=null){
out2.close();
}
if(error != null){
jObj.put(“error”, error);
}
}
return jObj.toString();
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/247791.html