我现在有个问题:问题简易代码 InputStream in = null;
File file = null;
byte[] b = null;
String urls[] = new String[]{"E:\\\\nice\\ss.txt","E:\\\\nice\\dd.txt"};
try {
for(int i=0;i<urls.length;i++){
file = new File(urls[i]);
in = new FileInputStream(file);
in.read(b);
}
} catch (Exception ex) {
ex.printStackTrace();
}finally{
try {
in.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
我现在要对一个文件夹下的所有文件(假设所有文件都为txt)进行读写操作,我用的是for循环,我想问的是io流要在for里面关闭吗?如不在for循环里关闭在for外面关闭会不会对文件有所影响,比如留下文件句柄,请解释原因,还有假如文件很多的情况下,"E:\\\\nice\\ss.txt"所对应的in会在执行后面文件操作(for循环内)的时候被回收资源吗?
File file = null;
byte[] b = null;
String urls[] = new String[]{"E:\\\\nice\\ss.txt","E:\\\\nice\\dd.txt"};
try {
for(int i=0;i<urls.length;i++){
file = new File(urls[i]);
in = new FileInputStream(file);
in.read(b);
}
} catch (Exception ex) {
ex.printStackTrace();
}finally{
try {
in.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
我现在要对一个文件夹下的所有文件(假设所有文件都为txt)进行读写操作,我用的是for循环,我想问的是io流要在for里面关闭吗?如不在for循环里关闭在for外面关闭会不会对文件有所影响,比如留下文件句柄,请解释原因,还有假如文件很多的情况下,"E:\\\\nice\\ss.txt"所对应的in会在执行后面文件操作(for循环内)的时候被回收资源吗?
import java.io.IOException;
import java.io.File;public class ReadFile {
public ReadFile() {} /**
* 删除某个文件夹下的所有文件夹和文件
* @param delpath String
* @throws FileNotFoundException
* @throws IOException
* @return boolean
*/
public static boolean deletefile(String delpath) throws FileNotFoundException,
IOException {
try { File file = new File(delpath);
if (!file.isDirectory()) {
System.out.println("1");
file.delete();
}
else if (file.isDirectory()) {
System.out.println("2");
String[] filelist = file.list();
for (int i = 0; i < filelist.length; i++) {
File delfile = new File(delpath + "\\" + filelist[i]);
if (!delfile.isDirectory()) {
System.out.println("path=" + delfile.getPath());
System.out.println("absolutepath=" + delfile.getAbsolutePath());
System.out.println("name=" + delfile.getName());
delfile.delete();
System.out.println("删除文件成功");
}
else if (delfile.isDirectory()) {
deletefile(delpath + "\\" + filelist[i]);
}
}
file.delete(); } }
catch (FileNotFoundException e) {
System.out.println("deletefile() Exception:" + e.getMessage());
}
return true;
} /**
* 删除某个文件夹下的所有文件夹和文件
* @param delpath String
* @throws FileNotFoundException
* @throws IOException
* @return boolean
*/
public static boolean readfile(String filepath) throws FileNotFoundException,
IOException {
try { File file = new File(filepath);
if (!file.isDirectory()) {
System.out.println("文件");
System.out.println("path=" + file.getPath());
System.out.println("absolutepath=" + file.getAbsolutePath());
System.out.println("name=" + file.getName()); }
else if (file.isDirectory()) {
System.out.println("文件夹");
String[] filelist = file.list();
for (int i = 0; i < filelist.length; i++) {
File readfile = new File(filepath + "\\" + filelist[i]);
if (!readfile.isDirectory()) {
System.out.println("path=" + readfile.getPath());
System.out.println("absolutepath=" + readfile.getAbsolutePath());
System.out.println("name=" + readfile.getName());
}
else if (readfile.isDirectory()) {
readfile(filepath + "\\" + filelist[i]);
}
} } }
catch (FileNotFoundException e) {
System.out.println("readfile() Exception:" + e.getMessage());
}
return true;
} public static void main(String[] args) {
try {
readfile("D:/file");
//deletefile("D:/file");
}
catch (FileNotFoundException ex) {
}
catch (IOException ex) {
}
System.out.println("ok");
}}