Java文件操作详解Java

时间:2024-05-14 07:36:50 其他范文 收藏本文 下载本文

Java文件操作详解Java(推荐5篇)由网友“fanshu”投稿提供,以下是小编收集整理的Java文件操作详解Java,仅供参考,欢迎大家阅读。

Java文件操作详解Java

篇1:Java文件操作详解Java

输入输出流 在Java中,我们把能够读取一个字节序列的对象称作一个输入流;而我们把够写一个字节序列称作一个输出流,它们分别由抽象类 InputStream和OutputStream类表示。因为面向字节的流不方便用来处理存储为Unicode(每个字符使用两个字节)的信息。所以Jav

输入输出流

在Java中,我们把能够读取一个字节序列的对象称作一个输入流;而我们把够写一个字节序列称作一个输出流。它们分别由抽象类 InputStream和OutputStream类表示。因为面向字节的流不方便用来处理存储为Unicode(每个字符使用两个字节)的信息。所以Java 引入了用来处理Unicode字符的类层次,这些类派生自抽象类Reader和Writer,它们用于读写双字节的Unicode字符,而不是单字节字符。

Java.io包简介

JDK标准帮助文档是这样解释Java.io包的,通过数据流、序列和文件系统为系统提供输入输出。

InputStream类和OutputStream类

InputStream类是所有输入数据流的父类,它是一个抽象类,定义了所有输入数据流都具有的共通特性。

java.io.InputStream的方法如下:

public abstract readthrows IOException

读取一个字节并返回该字节,如果到输入源的末则返回-1。一个具体的输入流类需要重载此方法,以提供 有用的功能。例如:在FileInputStream类中,该方法从一个文件读取一个字节。

public int read(byte[] b)throws IOException

把数据读入到一个字节数据中,并返回实际读取的字节数目。如果遇到流末 则返回-1,该方法最多读取b.length个字节。

public abstract int read(byte[] b,int off,int len)throws IOException

把数据读入到一个字节数组中并返回实际读取的字节数目。如果遇到流的末尾则的返回-1。 其中参数off表示第一个字节在b中的位置,len表示读取的最大字节数。

public long skip(long n)throws IOException

略过N个字节不读取,会返回实际略过的字节数目。因为数据流中剩下的数据可能不到N 个字节那么多,所以此时返回值会小于N。

public int available()throws IOException

read方法(包括后面要讲的OutputStream类的Write方法)都能够阴塞一个线程,直到字节被 实际读取或写入。这意味着如果一个流不能立即被读或被写

/*

* Created on -3-10

* To change the template for this generated file go to

* Window>Preferences>Java>Code Generation>Code and Comments

*/

package mytestfiles;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.PrintWriter;

/**

* @author zhangqinglin

* To change the template for this generated type comment go to

* Window>Preferences>Java>Code Generation>Code and Comments

*/

public class Files

{

public static void main(String[] args) throws IOException

{

Files f = new Files();

// System.out.println(f.readFile(“f:\\LinkFile.java”));

// f.readAllFile(“f:\\”,“LinkFile.java”);

// f.readLineFile(“f:\\”,“LinkFile.java”);

// System.out.println(f.fileIsNull(“f:\\”,“122.txt”));

// f.readFolderByFile(“F:\\PDF”);

// System.out.println(f.createAndDeleteFolder(“ss”,“f:\\”));

// System.out.println(f.createAndDeleteFile(“f:\\ss\\”,“TestFile.dat”));

String[] ss = new String[50];

for(int i=0;i

{

ss[i] = “信息技术和互联网(计算机软硬件,通讯) ”+i;

}

f.writeFile(“f:\\ss\\”,“TestFile.txt”,ss);

}

/**

* 文件的写入

* @param filePath(文件路径)

* @param fileName(文件名)

* @param args[]

* @throws IOException

*/

public void writeFile(String filePath,String fileName,String[] args) throws IOException

{

FileWriter fw = new FileWriter(filePath+fileName);

PrintWriter ut=new PrintWriter(fw);

for(int i=0;i

{

out.write(args[i]);

out.println();

out.flush();

}

fw.close();

out.close();

}

/**

* 文件的写入

* @param filePath(文件路径)

* @param fileName(文件名)

* @param args

* @throws IOException

*/

public void writeFile(String filePath,String fileName,String args) throws IOException

{

FileWriter fw = new FileWriter(filePath+fileName);

fw.write(args);

fw.close();

}

/**

* 创建与删除文件

* @param filePath

* @param fileName

* @return 创建成功返回true

* @throws IOException

*/

public boolean createAndDeleteFile(String filePath,String fileName) throws IOException

{

boolean result = false;

File file = new File(filePath,fileName);

if(file.exists())

{

file.delete();

result = true;

System.out.println(“文件已经删除!”);

}

else

{

file.createNewFile();

result = true;

System.out.println(“文件已经创建!”);

}

return result;

}

/**

* 创建和删除目录

* @param folderName

* @param filePath

* @return 删除成功返回true

*/

public boolean createAndDeleteFolder(String folderName,String filePath)

{

boolean result = false;

try

{

File file = new File(filePath+folderName);

if(file.exists())

{

file.delete();

System.out.println(“目录已经存在,已删除!”);

result = true;

}

else

{

file.mkdir();

System.out.println(“目录不存在,已经建立!”);

result = true;

}

}

catch(Exception ex)

{

result = false;

System.out.println(“CreateAndDeleteFolder is error:”+ex);

}

return result;

}

/**

* 输出目录中的所有文件及目录名字

* @param filePath

*/

public void readFolderByFile(String filePath)

{

File file = new File(filePath);

File[] tempFile = file.listFiles();

for(int i = 0;i

{

if(tempFile[i].isFile())

{

System.out.println(“File : ”+tempFile[i].getName());

}

if(tempFile[i].isDirectory())

{

System.out.println(“Directory : ”+tempFile[i].getName());

}

}

}

/**

* 检查文件中是否为一个空

* @param filePath

* @param fileName

* @return 为空返回true

* @throws IOException

*/

public boolean fileIsNull(String filePath,String fileName) throws IOException

{

boolean result = false;

FileReader fr = new FileReader(filePath+fileName);

if(fr.read() == -1)

{

result = true;

System.out.println(fileName+“ 文件中没有数据!”);

}

else

{

System.out.println(fileName+“ 文件中有数据!”);

}

fr.close();

return result;

}

/**

* 读取文件中的所有内容

* @param filePath

* @param fileName

* @throws IOException

*/

public void readAllFile(String filePath,String fileName) throws IOException

{

FileReader fr = new FileReader(filePath+fileName);

int count = fr.read();

while(count != -1)

{

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

count = fr.read();

if(count == 13)

{

fr.skip(1);

}

}

fr.close();

}

/**

* 一行一行的读取文件中的数据

* @param filePath

* @param fileName

* @throws IOException

*/

public void readLineFile(String filePath,String fileName) throws IOException

{

FileReader fr = new FileReader(filePath+fileName);

BufferedReader br = new BufferedReader(fr);

String line = br.readLine();

while(line != null)

{

System.out.println(line);

line = br.readLine();

}

br.close();

fr.close();

}

}

原文转自:www.ltesting.net

篇2:java多线程数据库操作Java

import java .io.*; import java.sql.*; public class ToOracle { public static void main(String[] args) { int n = 10;//每个线程执行的个数 //System.out.println(“start action!!!!!!”); ToOracle ac = new ToOracle(); ThreadRun[] testrun = new Threa

importjava.io.*;

import java.sql.*;

public class ToOracle {

public static void main(String[] args) {

int n = 10;//每个线程执行的个数

//System.out.println(“start action!!!!!!”);

ToOracle ac = new ToOracle();

ThreadRun[] testrun = new ThreadRun[21];

for (int i = 1; i <= 21; i++) {

testrun[i] = ac.new ThreadRun();

testrun[i].TRun(n);

System.out.println(“线程” + i + “已经启动”);

}

//testrun[1] = ac.new ThreadRun();

//testrun[1].TRun(10);

for (int i = 1; i <= 21; i++) {

testrun[i].TExit();

}

}

class ThreadRun {

String blobname = “D:\eclipse\test\test1.txt”; //blob文件名

String clobname = “D:\eclipse\test\test2.txt”; //clob文件名

String in = “insert into ”;

String in1 = “(order_id,ric_code,siz,price,trade_datetime,status,testblob,testclob) values(9,´asdfjkl´,21,123.34567,sysdate,´nill逆耳´,?,?)”;

String tablename = “orders1”;

String sqlstr = “”; // sql 语句

ThreadUseExtends thread = new ThreadUseExtends(blobname, clobname,

sqlstr);

public void TRun(int n) {

sqlstr = in + tablename + in1;

thread = new ThreadUseExtends(blobname, clobname, sqlstr);

//thread.start();

thread.run(n);

/*

* int n=10; for (int i = 1; i <= 21; i++) { while(0

* in + tablename + in1; thread[i] = new ThreadUseExtends(blobname,

* clobname, sqlstr[i]); thread[i].start(); n--; }

* System.out.println(“线程” + i + “已经启动”); }

*/

//System.out.println(“线程1已经启动”);

}

public void TExit() {

thread.interrupt();

}

class ThreadUseExtends extends Thread {

String filename1;//blob filename

String filename2;//clob filename

String str;

//构造函数要有(blob文件名,clob文件名,sql语句)

public ThreadUseExtends(String name1, String name2, String sqlstr) {

filename1 = name1;

filename2 = name2;

str = sqlstr;

}

ReadFiles r1 = new ReadFiles();

public void run(int n) {

while (n >0) {

try {

String url = “jdbc:oracle:thin:@193.9.200.111:1521:ora9i”;

String login = “system”; // use your login here

String password = “ti”; // use your password here

Class.forName(“oracle.jdbc.driver.OracleDriver”);

Connection con = DriverManager.getConnection(url,

login, password);

String testLong = r1.ReadFile(filename1);

String testLong1 = r1.ReadFile(filename2);

byte[] ba = testLong.getBytes();

System.out.println(“str=” + str);

//String strSql = str; //“insert into

// orders(order_id,ric_code,siz,price,trade_datetime,status,testblob,testclob)

// values(8,´asdfjkl´,21,123.34567,sysdate,´nill逆耳´,?,?)”;

PreparedStatement stm = con.prepareStatement(str);

stm.setBytes(1, ba);

StringReader test = new StringReader(testLong1);

stm.setCharacterStream(2, test, testLong.length());

stm.execute();

stm.close();

con.close();

} catch (Exception e) {

e.printStackTrace();

}

n--;

}//while

}//run

}//ThreadUseExtends class

// ReadFiles class for read text!!

class ReadFiles {

public ReadFiles() {

}

//ReadFile method,read file

public String ReadFile(String FileName) {

String Name = FileName;

String File = “”;

try {

FileReader ReadF = new FileReader(Name);//读文件

BufferedReader HuanChong = new BufferedReader(ReadF);//文件读缓冲.

try {

File = HuanChong.readLine();

} catch (IOException e1) {

// TODO 自动生成 catch 块

e1.printStackTrace();

}

} catch (FileNotFoundException e) {

// TODO 自动生成 catch 块

e.printStackTrace();

}

//System.out.println(“文件:”+File);

return File;

}

}//ReadFiles class

}//ThreadRun class

}//ToOracle class

原文转自:www.ltesting.net

篇3:经典java面试题及答案详解

java面试题1、

说说HashMap和Hashtable的差别

答案分析:

都属于Map接口的类,实现了将惟一键映射到特定的值上。

HashMap类没有分类或排序。他允许一个null键和多个null值。

Hashtable类似于HashMap,不过不允许null键和null值。他也比HashMap慢,因为他是同步的。

java面试题2、

Anonymous Inner Class (匿名内部类)是否能extends(继承)其他类,是否implements(实现)interface(接口)?

答案分析:

匿名的内部类是没有名字的内部类。不能extends(继承)其他类,但一个内部类能作为一个接口,由另一个内部类实现。

java面试题3、

STRING与STRINGBUFFER的区别是什么?

答案分析:

STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString方法。

java面试题4、

什么时候用assert

答案分析:

断言是个包含布尔表达式的语句,在执行这个语句时假定该表达式为true。如果表达式计算为false,那么系统会报告一个AssertionError,他用于调试目的。

java面试题5、

Set里的元素是不能重复的,那么用什么方法来区分重复和否呢?是用==还是equals()?他们有何差别?

答案分析:

Set里的元素是不能重复的,那么用iterator()方法来区分重复和否。equals()是判读两个Set是否相等。

equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

java面试题6、

List, Set, Map是否继承自Collection接口?

答案分析:

List,Set是

Map不是

[经典java面试题及答案详解]

篇4:java实现文件目录压缩

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.util.zip.ZipEntry;

import java.util.zip.ZipOutputStream;

public class MyZip {

private static void zip(File zipFile,File sourceFile) throws Exception{

ZipOutputStream ut=new ZipOutputStream(new FileOutputStream(zipFile));

process(out,sourceFile,“”);

out.close();

}

/**

* 递归形式写入zip文件

* @param zipOutputStreamzip输出流

* @param sourceFile源文件

* @param base 父级路径

* @throws Exception

*/

private static void process(ZipOutputStream zipOutputStream,File sourceFile,String base) throws Exception{

if(sourceFile.isDirectory()){

File[] fl=sourceFile.listFiles();

zipOutputStream.putNextEntry(new ZipEntry(base+sourceFile.getName()+“/”));

base=base+sourceFile.getName()+“/”;

for(int i=0;i

process(zipOutputStream,fl[i],base);

}

}else{

zipOutputStream.putNextEntry(new ZipEntry(base+sourceFile.getName()));

FileInputStream in=new FileInputStream(sourceFile);

zipOutputStream.setComment(“www.mldnjava.cn”);

int b;

while((b=in.read())!=-1){

zipOutputStream.write(b);

}

in.close();

}

}

public static void main(String[] args) throws Exception {

MyZip.zip(new File(“e:” +File.separator + “HelloJava.zip”),new File( “e:” + File.separator + “HelloJava.java”));

}

}

篇5:java笔试题以及答案详解

java笔试题以及答案详解

一、单项选择题

1.Java是从()语言改进重新设计,

A.Ada B.C++ C.Pasacal D.BASIC

答案:B

2.下列语句哪一个正确()

A. Java程序经编译后会产生machine code

B. Java程序经编译后会产生byte code

C. Java程序经编译后会产生DLL

D.以上都不正确

答案:B

3.下列说法正确的有()

A. class中的constructor不可省略

B. constructor必须与class同名,但方法不能与class同名

C. constructor在一个对象被new时执行

D.一个class只能定义一个constructor

答 案:C

详解: 见下面代码, 很明显方法是可以和类名同名的,和构造方法唯一的区别就是,构造方法没有返回值。

package net.study;

public class TestConStructor

{

public TestConStructor()

{

System.out.println(“constructor”);

}

public void TestConStructor()

{

System.out.println(“not constructor”);

}

public static void main(String[] args)

{

TestConStructor testConStructor = new TestConStructor();

System.out.println(“main”);

testConStructor.TestConStructor();

}

}

4.提 供Java存取数据库能力的包是()

A.java.sql B.java.awt C.java.lang D.java.swing

答案:A

5.下 列运算符合法的是()

A.&& B. C.if D.:=

答案:A

详解:

java 中没有 := 这种运算符, if else不算运算符

6.执行如下程序代码

a=0;c=0;

do{

--c;

a=a-1;

}while(a>0);

后,C的值是()

A.0 B.1 C.-1 D.死循环

答 案:C

详解:

Do while 中的语句是至少要执行一次的。 执行顺序为:do 中的语句,然后价差while条件,如果为false,则终止;如果为true,则继续执行Do中的语句,然后再检查while条件,如此循环。

7.下列哪一种叙述是正确的()

A. abstract修饰符可修饰字段、方法和类

B.抽 象方法的body部分必须用一对大括号{ }包住

C.声明抽象方法,大括号可有可无

D.声明抽象方法不可写出大括号

答案:D

详解:

abstract不能修饰字段。既然是抽象方法,当然是没有实现的方法,根本就没有body部分。

8.下列语句正确的是()

A.形式参数可被视为local variable

B.形式 参数可被字段修饰符修饰

C.形式参数为方法被调用时,真正被传递的参数

D.形式参数不可以是对象

答案:A

详解:

形参可以看成方法中的局部变量。 传递的是对象引用

9.下列哪种说法是正确的()

A.实例方法可直接调用超类的实例方法

B.实例方法可直接调用超类的类方法

C.实例方法可直接调用其他类的实例方法

D.实例方法可直接调用本类的 类方法

答案:D

二、多项选择题

1.Java程序的种类有()

A.类 (Class) B.Applet C.Application D.Servlet

2.下列说法正 确的有()

A. 环境变量可在编译source code时指定

B.在编译程序时,所能指定的环境变量不包括 class path

C. javac一次可同时编译数个Java源文件

D. javac.exe能指定编译结果要置于哪个目录(directory)

答案:BCD

3.下列标识符不合法的有 ()

A.new B.$Usdollars C.1234 D.car.taxi

答案:ACD

解释:

java 变量命名规则:1. 大小写有别,例如 a 和 A是两个变量 2. 长度任意 3. 可以任何字母开始,另外还可以以“_”和“$”开始,一般“$”是很多代码生成器用的,人工写出来的代码不鼓励“_” “$” 4. 除了第一个字符,后面可以跟任何字母,数字,_和$

new 是关键字不行,

不能以数字开头。 不用有“.”这种符号

4.下列说法错误的.有()

A.数组是一种对象

B.数组属于一种原生类

C. int number=[]={31,23,33,43,35,63}

D.数组的大 小可以任意改变

答案:BCD

解释:

数组不是原生类:int double boolean float byte short long char ,初始化多大就是多大

5.不能用来修饰interface的有()

A.private B.public C.protected D.static

答案:ACD

解释:

interface 是public的, 加不加都是public

6.下列正确的有()

A. call by value不会改变实际参数的数值

B. call by reference能改变实际参数的参考地址

C. call by reference不能改变实际参数的参考地址

D. call by reference能改变实际参数的内容

答案:ACD

7.下列说法 错误的有()

A.在类方法中可 用this来调用本类的类方法

B.在类方法中调用本类的类方法时可直接调用

C.在类方法中只能调用本类中的类方法

D.在类方法中绝对不能调用实例方法

答案:CD

解释:

原来答案中包含A,但是在 JDK1.5中,这样写是不会出错的,只不过会有警告而已。 类方法中当然可以条用其它的方法,比如system.out 。 当然你也可以new Object, 调用一下object.toString()

8.下列说法错误的有()

A. Java面向对象语言容许单独的过程与函数存在

B. Java面向对象语言容许单独的方法存在

C. Java语言中的方法属于类中的成员(member)

D. Java语言中的方法必定隶属于某一类(对象),调用方法与过程或函数相同

答案:ABC

解释:

java全部完全面向对象的

9.下列说法错误的有 ()

A.能被java.exe成功运行的java class文件必须有main()方法

B. J2SDK就是Java API

C. Appletviewer.exe可利用jar选项运行.jar文件

D.能被 Appletviewer成功运行的java class文件必须有main()方法

答案:BCD

解释:

A正确main方法是入口 BJ2SDK当然不仅仅包含java API C jar选项是java.exe 的选项 D Appletviewer是运行applet的, applet 不用main方法,继承applet类即可。

三、判断题

1.Java程序中的起始类名称必须与存放该类的文件名相同。()

答案:正确

2.Unicode是用16位来表示 一个字的。()

答案:正确

3.原生类中的数据类型均可任意转换。()

答案:错误

1.分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。

答案:

BOOL : if ( !a ) or if(a)

int : if ( a == 0)

float : const EXPRESSION EXP = 0.000001

if ( a < EXP && a >-EXP)

pointer : if ( a != NULL) or if(a == NULL)

java学习总结

计算机二级JAVA考试巩固试题及答案

java学习个人总结

计算机二级Java备考练习试题附答案

java个人学习总结2

如何系统游有效学习java基础

java毕业实习报告

暑期关于学习java实习报告

java培训实习报告

java项目个人总结范文

Java文件操作详解Java
《Java文件操作详解Java.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

【Java文件操作详解Java(推荐5篇)】相关文章:

浅谈PDM系统中的图档批阅技术2023-09-13

java飞机大战心得体会2023-07-20

JSP实习报告2022-10-09

java个人总结2023-04-21

Java开发毕业论文参考文献2023-06-07

java企业的面试笔试题2022-09-26

如何才能系统有效的学习java2024-01-02

java面试题及答案2023-12-27

java教学总结2022-12-01

java软件工程师自我评价2022-09-18

点击下载本文文档