生成的文件多出了一串莫名 的数字了,该怎么解决?

时间:2022-09-16 18:10:01
file2.createTempFile(file.getName(), ".avi", file2)//file2是一个目录,file是个“.avi”视频文件
假如file文件是这样的:File.avi,为什么上述方法执行后会生成一个:File.avi6703671375195601261.avi这么一个文件呢?中间怎么出现了这么多的多出来的数字?要是我现在要生成和原来一样的文件该怎么写?

5 个解决方案

#1


api里面的:

在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。如果此方法成功返回,则可以保证: 

由返回的抽象路径名表示的文件在此方法被调用之前不存在。 
此方法及其所有变体都不会在虚拟机的当前调用中再次返回相同的抽象路径名。 
此方法只提供了临时文件的部分功能。要安排自动删除此方法创建的文件,可使用 deleteOnExit() 方法。 

临时文件就是这样的。。。

话说lz你想实现怎样的功能呢?

#2


引用 1 楼  的回复:
api里面的:

在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。如果此方法成功返回,则可以保证:.............
话说lz你想实现怎样的功能呢? 
我给你看下我想实现功能的程序代码:package movie_File.tang;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;


public class movie_file
{
    static FileInputStream in=null;
    static FileOutputStream out=null;
public static void main(String[] args) throws IOException
{
String path1="I:/File1";
String path2="I:/File2";
    File file1=new File(path1);
    File file2=new File(path2);
    move(file1,file2);
}
static void move(File file1,File file2) throws IOException{
File[] f=file1.listFiles();
for(File file:f){
 if(file.exists()){
if(file.isFile()){
 
   if(file.toString().endsWith(".avi")){
  in=new FileInputStream(file);
 BufferedInputStream bin=new BufferedInputStream(in);
out=new FileOutputStream(file2.createTempFile(file.getName(), "", file2));
 BufferedOutputStream bout=new BufferedOutputStream(out);
  byte[] buff=new byte[1024];
  while(bin.read(buff,0,buff.length)!=-1){
bout.write(buff);
  }
  bin.close();
  in.close();
  bout.close();
  out.close();
   }
   else{
   return;
   }
}
else {
move(file,file2);
}
 }else {
 return;
 }
}
}

}
就是把File1目录下的所有.avi文件复制到File2中

#3


复制文件的话,直接用流就可以了
不需要createTempFile的,这个是建立临时文件的

#4


引用 3 楼  的回复:
复制文件的话,直接用流就可以了
不需要createTempFile的,这个是建立临时文件的
不创建文件往哪写啊?

#5


只要你有File对象,就可以直接往里面写了,如:
File file = new File("d:\\test.txt");
FileWriter writer = new FileWriter(file);
这样就可以往file里面写了

#1


api里面的:

在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。如果此方法成功返回,则可以保证: 

由返回的抽象路径名表示的文件在此方法被调用之前不存在。 
此方法及其所有变体都不会在虚拟机的当前调用中再次返回相同的抽象路径名。 
此方法只提供了临时文件的部分功能。要安排自动删除此方法创建的文件,可使用 deleteOnExit() 方法。 

临时文件就是这样的。。。

话说lz你想实现怎样的功能呢?

#2


引用 1 楼  的回复:
api里面的:

在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。如果此方法成功返回,则可以保证:.............
话说lz你想实现怎样的功能呢? 
我给你看下我想实现功能的程序代码:package movie_File.tang;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;


public class movie_file
{
    static FileInputStream in=null;
    static FileOutputStream out=null;
public static void main(String[] args) throws IOException
{
String path1="I:/File1";
String path2="I:/File2";
    File file1=new File(path1);
    File file2=new File(path2);
    move(file1,file2);
}
static void move(File file1,File file2) throws IOException{
File[] f=file1.listFiles();
for(File file:f){
 if(file.exists()){
if(file.isFile()){
 
   if(file.toString().endsWith(".avi")){
  in=new FileInputStream(file);
 BufferedInputStream bin=new BufferedInputStream(in);
out=new FileOutputStream(file2.createTempFile(file.getName(), "", file2));
 BufferedOutputStream bout=new BufferedOutputStream(out);
  byte[] buff=new byte[1024];
  while(bin.read(buff,0,buff.length)!=-1){
bout.write(buff);
  }
  bin.close();
  in.close();
  bout.close();
  out.close();
   }
   else{
   return;
   }
}
else {
move(file,file2);
}
 }else {
 return;
 }
}
}

}
就是把File1目录下的所有.avi文件复制到File2中

#3


复制文件的话,直接用流就可以了
不需要createTempFile的,这个是建立临时文件的

#4


引用 3 楼  的回复:
复制文件的话,直接用流就可以了
不需要createTempFile的,这个是建立临时文件的
不创建文件往哪写啊?

#5


只要你有File对象,就可以直接往里面写了,如:
File file = new File("d:\\test.txt");
FileWriter writer = new FileWriter(file);
这样就可以往file里面写了