Java:(看来问错地方了!大家帮着看看呗)File类的compareTo(File anotherfile)方法如何实现的? (200分)

  • 主题发起人 主题发起人 beerlee
  • 开始时间 开始时间
B

beerlee

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾:
我想创建一个File类的子类,实现文件的读写,用流进行操作。现在遇到的问题如下:
1 我想仿照File类的compareTo(File anotherfile)方法写一个copyTo(File anotherfile),但没明白compareTo是如何实现的,问题是:
在File类中,compareTo方法是将File的一个实例(比如说resourcefile)与anotherfile进行比较的,在compareTo方法中,他是如何获知它的一个实例并与anotherfile进行比较的???
也就是说,如下调用时,File类是如何把它自身和anotherfile比较的?
File file= new File(path);
file.compareTo(anotherfile);// 何把它自身和anotherfile比较的?
谢谢各位了!!
 
File file= new File(path);
file.compareTo(anotherfile);// 何把它自身和anotherfile比较的?
file.compareTo是将当前File对象所表示的物理文件路径path String与
anotherfile 所表示的物理文件路径比较,也就是字符串的比较,如:
File a=new File("d://bbc.txt");
File b=new File("d://abc.txt");
a.compareTo(b) 结果为1.
如果a,b所表示的文件对象,是物理路径上相同的对象那么结果为0.
 
先谢谢ZRWeng的回答
long compareTo()比较俩个文件,返回第一个不一样的字节位置
我不理解在类中如何能获取它的一个实例?
 
>>long compareTo()比较俩个文件,返回第一个不一样的字节位置
那你是重写compareTo()用字节输入流去比较文件内容吧
>>我不理解在类中如何能获取它的一个实例?
不太明白你说的。
它是指anotherfile? 传入一个引用不就可以了?
 
--比较文件
public static void main(String[] args)
{
java.io.File F1 =new java.io.File("e://1.exe");
java.io.File F2 =new java.io.File("e://2.exe");
if (F1.length()!=F2.length()) return;
java.io.FileInputStream f1=null;
java.io.FileInputStream f2=null;
int i=0;
int j=0;
try{
f1=new java.io.FileInputStream(F1);
}catch (Exception e){
}
try{
f2=new java.io.FileInputStream(F2);
}catch (Exception e){
}
byte[] f1byte=new byte[1024];
byte[] f2byte=new byte[1024];
String s=null;
while (true)
{
try{
i= f1.read(f1byte,0,1024);
}catch (Exception e){}
try{
j=f2.read(f2byte,0,1024);
}catch (Exception e){}
try{
s = new String(f1byte, 0, i, "ISO-8859-1");
}catch (Exception e)
{
break;
}
for (i=0;i<f1byte.length;i++)
{
if (f1byte!=f2byte)
{
System.out.println(false);
return;
}
}
try{
f1.skip(i);
f2.skip(j);
} catch (Exception e){}
}
System.out.println(true);
}
 
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URI;
public class CopyableFile extends File {
public CopyableFile(String pathname) {
super(pathname);
}
public CopyableFile(URI uri) {
super(uri);
}
public CopyableFile(File parent, String child) {
super(parent, child);
}
public CopyableFile(String parent, String child) {
super(parent, child);
}
public void copyTo(File destination) throws IOException {
BufferedInputStream bIS = null;
BufferedOutputStream bOS = null;

try {
bIS = new BufferedInputStream(new FileInputStream(this));

bOS = new BufferedOutputStream(new FileOutputStream(destination));
byte[] buffer = new byte[2048];

int bytesRead;

while ((bytesRead = bIS.read(buffer, 0, buffer.length)) != -1) { bOS.write(buffer, 0, bytesRead);
}
bOS.flush();
} finally {
if (bIS != null) {
try {
bIS.close();
bIS = null;
} catch(IOException e) { }
}
if (bOS != null) {
try {
bOS.close();

bOS = null;
} catch (IOException e){}
}
}
}
}
public static void main(String[] args) throws IOException { CopyableFile source = new CopyableFile("C://Test.dat");

source.copyTo(new File("C://Test2.dat"));
}
}
这个东东是不是你要的??
是的话就发分!
 
to 落木潇潇
正是这个哦
发分!
多发点给他大家每意见吧?
 
后退
顶部