您的位置:

java文件操作,java文件操作漏洞

本文目录一览:

java选择文件操作

你用I/0把要保存的东西,直接写到*.ini文件中不就可以了吗 这个是我写连连看游戏,用来保存记录的,自己参考下,很简单。 importjava.awt.Point; importjava.io.*; importjava.util.*; publicclassLoadAndSave{ privatestaticfinalPropertiesprop=newProperties(); publicstaticFilerecordFile=newFile("record.dat"); publicstaticFilesetFile=newFile("setup.ini"); publicstaticStringBuilder[]setLines; publicstaticintgetRecord(inttotal){ intseconds=999999999; try{ BufferedReaderbReader=newBufferedReader(newInputStreamReader(newFileInputStream(recordFile))); Stringline=null; while((line=bReader.readLine())!=null) try{ String[]values=line.split("\t"); intn=Integer.parseInt(values[1]); ints=Integer.parseInt(values[2]); if(n==total

java中如何使用缓冲区对文件进行读写操作?

首先,了解下什么是缓冲区:

电脑内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。

栈——就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。

堆——就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete.如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。

自由存储区——就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。

全局/静态存储区——全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有这个区分了,他们共同占用同一块内存区。

常量存储区,这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改(当然,你要通过非正当手段也可以修改)

电脑缓冲区就是预留下来的做为急用的那一部分,为暂时置放输出或输入资料的内存。

如何对缓冲区进行操作:

当我们读写文本文件的时候,采用Reader是非常方便的,比如FileReader,InputStreamReader和BufferedReader。其中最重要的类是InputStreamReader, 它是字节转换为字符的桥梁。你可以在构造器重指定编码的方式,如果不指定的话将采用底层操作系统的默认编码方式,例如GBK等。使用FileReader读取文件:

FileReader fr = new FileReader("ming.txt");

int ch = 0;

while((ch = fr.read())!=-1 )

{

System.out.print((char)ch);

}

其中read()方法返回的是读取得下个字符。当然你也可以使用read(char[] ch,int off,int length)这和处理二进制文件的时候类似。

事实上在FileReader中的方法都是从InputStreamReader中继承过来的。read()方法是比较好费时间的,如果为了提高效率我们可以使用BufferedReader对Reader进行包装,这样可以提高读取得速度,我们可以一行一行的读取文本,使用readLine()方法。

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt")));

String data = null;

while((data = br.readLine())!=null)

{

System.out.println(data);

}

了解了FileReader操作使用FileWriter写文件就简单了,这里不赘述。

Eg.我的综合实例:

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

public class testFile {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

// file(内存)----输入流----【程序】----输出流----file(内存)

File file = new File("d:/temp", "addfile.txt");

try {

file.createNewFile(); // 创建文件

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// 向文件写入内容(输出流)

String str = "亲爱的小南瓜!";

byte bt[] = new byte[1024];

bt = str.getBytes();

try {

FileOutputStream in = new FileOutputStream(file);

try {

in.write(bt, 0, bt.length);

in.close();

// boolean success=true;

// System.out.println("写入文件成功");

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

try {

// 读取文件内容 (输入流)

FileInputStream out = new FileInputStream(file);

InputStreamReader isr = new InputStreamReader(out);

int ch = 0;

while ((ch = isr.read()) != -1) {

System.out.print((char) ch);

}

} catch (Exception e) {

// TODO: handle exception

}

}

}

如何使用命令行编译以及运行java文件

要想编译和运行java文件,很简单,只需要两个命令:

(1)javac:作用:编译java文件;使用方法: javac Hello.java ,如果不出错的话,在与Hello.java 同一目录下会生成一个Hello.class文件,这个class文件是操作系统能够使用和运行的文件。

(2)java: 作用:运行.class文件;使用方法:java Hello,如果不出错的话,会执行Hello.class文件。注意:这里的Hello后面不需要扩展名。

下面举例说明:

假设我有一个Hello.java文件放在D:\javatest 文件夹下。

打开cmd命令窗口,会出现C:\user\lenovo 这里出现的是系统用户名,这里我们需要将路径转移到java文件所在目录。

紧接着输入 D:回车,会出现一下界面:

这时候我们需要定位到java文件所在目录(这里是javatest目录),接着输入 cd javatest 回车。

此时进入到D:\javatest目录中,此时的Hello.java文件就在这里

这时候我们就可以用javac命令编译啦,输入javac Hello.java回车

这里如果没有任何提示表示编译成功,此时打开d:\javatest文件夹你会发现此时多了一个名为Hello.class的文件,这就是操作系统能够运行的文件。

接着输入 java Hello回车,你就会看到文件被运行的结果。

这里有几个要注意的问题

第一:Hello.java中的内容是一个类,这个类的名字与.java文件名字必须完全一致。如果不一致将出错。这里当你通过eclipse创建一个类文件的时候你就会理解的更清楚了,这里不赘述。

第二:javac 和 java 命令的使用方法要注意,格式。

第三:要使用这两命令,必须配置好环境变量。

java读取文件操作

关于FileInputStream你的理解是对的,读取操作是顺序向前,读过的不会再读。

不过第二个参数0你可能是误会了。它的作用不是指fis里的位置,而是指buffer里的偏移量。

在read中,0是指从buffer[0]开始保存数据;wirte中是指写出的数据是从buffer[0]开始。

Java Doc里的解释是这样的:

int java.io.FileInputStream.read(byte[] b, int off, int len) throws IOException

b the buffer into which the data is read.

off the start offset in the destination array b

len the maximum number of bytes read.

java 文件夹操作

你好,按照你的要求代码编写如下,可以直接运行

import java.io.File;

public class test {

public static void main(String[] args) {

File root = new File("d:\\");

for (File file : root.listFiles()) {

if (file.isDirectory()) {

for (File f : file.listFiles()) {

String fileName = f.getName();

if (fileName.endsWith(".png")) {

System.out.println(file.getName());

break;

}

}

}

}

}

}