java使用文件流實(shí)現(xiàn)查看下載次數(shù)
本文實(shí)例為大家分享了java使用文件流實(shí)現(xiàn)查看下載次數(shù)的具體代碼,供大家參考,具體內(nèi)容如下
需求:點(diǎn)擊一個(gè)按鈕的次數(shù)或者是展示文件,游戲被下載的次數(shù)
實(shí)現(xiàn):開辟一個(gè)流文件,用來保存被下載的次數(shù),然后讀文件中value,點(diǎn)擊一次value加1,再將此value保存到流文件中。
三種方法:
package cn.tr.test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;
public class TestDemo {
private static int in ;
private static File file;
public static void main(String[] args) {
fun2();
}
public static void fun(){
/** 初始化文件中的值為0*/
try {
OutputStream out = new FileOutputStream(file);
String str = "00";
out.write(str.getBytes());
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void fun2() {
file= new File("d:/test/d.txt");
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try {
/** 讀取文件中的內(nèi)容 */
if (file.exists()&&file.length()==0) {
fun();
}
InputStream is = new FileInputStream(file);
byte b[] = new byte[(int) file.length()];
for (int i = 0; i < b.length; i++) {
// 值字節(jié)在0-255 范圍之內(nèi)是作為int 來返回的
b[i] = (byte) is.read();
}
in =Integer.parseInt(new String(b));
in++;
System.out.println("讀出來的"+in);
/**再寫入到文件中 */
OutputStream out = new FileOutputStream(file);
String str = String.valueOf(in);
byte[] bytes = str.getBytes();
for (int i = 0; i < bytes.length; i++) {
out.write(bytes[i]); // 一個(gè)字節(jié)一個(gè)字節(jié)的寫入
}
is.close();
out.close();
System.out.println("寫入的"+in);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void fun3(){
file= new File("d:/test/d.txt");
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/** 先讀出來*/
try {
if (file.exists()&&file.length()==0) {
fun();
}
Reader reader = new FileReader(file);
char[] c = new char[(int)file.length()];
int temp = 0;
int len =0;
while((temp=reader.read()) != -1){
c[len]=(char)temp;
len++;
}
reader.close();
System.out.println("初始值"+new String(c,0,len));
in =Integer.parseInt(new String(c,0,len));
in++;
System.out.println("下載一次:"+in);
/** 再寫進(jìn)去*/
Writer writer = new FileWriter(file);
writer.write(in+"");
writer.close();
System.out.println("再寫進(jìn)去:"+in);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void fun4(){
Reader reader;
Writer writer;
file= new File("d:/test/d.txt");
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try {
if (file.exists()&&file.length()==0) {
fun();
}
/** 讀出來*/
reader = new FileReader(file);
BufferedReader br = new BufferedReader(reader);
char [] c = new char[(int)file.length()];
int len = 0;
int temp = 0;
while((temp=br.read())!= -1){
c[len]=(char)temp;
len++;
}
in =Integer.parseInt(new String(c, 0, len));
in++;
System.out.println("讀出來:"+ in);
/** 寫進(jìn)去*/
writer =new FileWriter(file);
BufferedWriter bw = new BufferedWriter(writer);
bw.write(in+"");
System.out.println("寫進(jìn)去:"+in);
br.close();
bw.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Spring MVC如何使用@RequestParam注解獲取參數(shù)
這篇文章主要介紹了Spring MVC實(shí)現(xiàn)使用@RequestParam注解獲取參數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
Spring AOP的概念與實(shí)現(xiàn)過程詳解
AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程,可通過運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù)。AOP是 Spring框架中的一個(gè)重要內(nèi)容2023-02-02
深入學(xué)習(xí)java位運(yùn)算的基礎(chǔ)知識(shí)
位運(yùn)算是直接對(duì)整數(shù)在內(nèi)存中的二進(jìn)制位進(jìn)行操作嗎,位運(yùn)算即可以節(jié)約內(nèi)存,同時(shí)使程序速度更快效率更高。文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,下面我們來一起學(xué)習(xí)下吧2019-06-06
解決IDEA報(bào)錯(cuò)java無效的目標(biāo)發(fā)行版:22
在使用IDEA編譯項(xiàng)目時(shí),可能會(huì)遇到JDK版本不一致的錯(cuò)誤,這篇文章主要介紹了解決IDEA報(bào)錯(cuò)java無效的目標(biāo)發(fā)行版:22的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-10-10
springSecurity用戶認(rèn)證和授權(quán)的實(shí)現(xiàn)

