这种问题我太熟了,有x种解决方法介绍给你们。
在 Java 中使用循环处理文件时,需要注意保证流的正确关闭,否则可能导致内存泄漏和其他问题。在循环内部关闭流也是一个不错的选择,但要确保在每次循环迭代兆悉结束时都关闭相关的流。
在实践中,可以将流的创建和关闭放入 try-with-resources 语句块中,以确保流正确关闭。示例如下:
在这个示例中,我们使用了 try-with-resources 语句块来创建文件输入流和缓冲读取器,并在结束后自动关闭它们。在循环族山乎内部,我们可以处理每一行的内容,而无需手动关闭流。
总之,为了确保文件访问的安全性和效率唯兆,建议在循环内部关闭相关流,并使用 try-with-resources 语句块来保护资源的正确关闭。
就是这些啦,整理不易,看完记得点个赞再走呀~
❷ java循环获取文件夹里文件创建时间 。。
可以通过File流的读取所有的文件,之后通过Runtime.getRuntime().exec方法获取时间。
举例:
File file = new File("F://2007vb6");// 文件目录
try {
for (File demoFile : file.listFiles()) {
Process ls_proc = Runtime.getRuntime().exec(
"cmd.exe /c dir " + file.getAbsolutePath() + " /tc");// 通过DOS获得的创建时间
InputStream is = ls_proc.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String str;
int i = 0;
while ((str = br.readLine()) != null) {
i++;
if (i == 6) {
System.out.println("Create time:" + str.substring(0, 17)); //创建时间获取
}
}
}
❸ java怎么循环读取目录下的文件内容
JAVA 遍历文件夹下的所有文件(递归调用和非递归调用)
1.不使用递归的方法调用。
public void traverseFolder1(String path) {
int fileNum = 0, folderNum = 0;
File file = new File(path);
if (file.exists()) {
LinkedList<File> list = new LinkedList<File>();
File[] files = file.listFiles();
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath());
list.add(file2);
fileNum++;
} else {
System.out.println("文件:" + file2.getAbsolutePath());
folderNum++;
}
}
File temp_file;
while (!list.isEmpty()) {
temp_file = list.removeFirst();
files = temp_file.listFiles();
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath());
list.add(file2);
fileNum++;
} else {
System.out.println("文件:" + file2.getAbsolutePath());
folderNum++;
}
}
}
} else {
System.out.println("文件不存在!");
}
System.out.println("文件夹共有:" + folderNum + ",文件共有:" + fileNum);
}
2.使用递归的方法调用
public static List<File> getFileList(String strPath) {
File dir = new File(strPath);
File[] files = dir.listFiles(); // 该文件目录下文件全部放入数组
if (files != null) {
for (int i = 0; i < files.length; i++) {
String fileName = files[i].getName();
if (files[i].isDirectory()) { // 判断是文件还是文件夹
getFileList(files[i].getAbsolutePath()); // 获取文件绝对路径
} else if (fileName.endsWith("avi")) { // 判断文件名是否以.avi结尾
String strFileName = files[i].getAbsolutePath();
System.out.println("---" + strFileName);
filelist.add(files[i]);
} else {
continue;
}
}
}
return filelist;
}
❹ 在java中如何遍历某个路径下的所有文件夹和文件
首先,我们先来遍历一下D盘根目录下所有的子文件:public
static
void
fileList()
{
File
file=new
File("d:/");
File[]
files
=
file.listFiles();
if
(files
!=
null)
{
for
(File
f
:
files)
{
System.out.println(f.getPath());
}
}
}对此,我们肯定不满足,我们需要遍历D盘下所有的文件和文件夹,而不是根目录下的文件夹,这个时候我们需要使用到递归:public
static
void
fileList(File
file)
{
File[]
files
=
file.listFiles();
if
(files
!=
null)
{
for
(File
f
:
files)
{
System.out.println(f.getPath());
fileList(f);
}
}
}然后在主函数中调用:public
static
void
main(String[]
args)
{
File
file=new
File("d:/");
fileList(file);
}结果是不是能令你满意呢?显然,输出的都是全路径,我们可以对我们的递归函数做如下改进:
public
static
void
fileList(File
file,int
node)
{
node++;
File[]
files
=
file.listFiles();
if
(files
!=
null)
{
for
(File
f
:
files)
{
for(int
i=0;i<node;i++){
if(i==node-1){
System.out.print("├");
}
else{
System.out.print("
");
}
}
System.out.println(f.getName());
fileList(f,node);
}
}
}然后再次在主函数中调用:public
static
void
main(String[]
args)
{
File
file=new
File("d:/");
fileList(file,0);
}得到的结果是一个类似树状的结构,如果你对此还不满意,可以尝试给JTree上添加节点,可以做到和资源管理器中一样的结构。
❺ java 循环读取一个指定文件夹下的所有文件,提供大致代码的思路吧,谢谢~
publicstaticList<File>getFiles(Stringpath){
Fileroot=newFile(path);
List<File>files=newArrayList<File>();
if(!root.isDirectory()){
files.add(root);
}else{
File[]subFiles=root.listFiles();
for(Filef:subFiles){
files.addAll(getFiles(f.getAbsolutePath()));
}
}
returnfiles;
}
publicstaticvoidmain(String[]args){
List<File>files=getFiles("D:\usr\local\java\jdk1.6.0_30");
for(Filef:files){
System.out.println(f.getName());
}
}
大概就是这样了,没有做异常处理,自己看着办~
❻ java遍历指定文件夹下的所有子文件夹怎么操作
import java.io.File ;
import java.io.IOException ;
public class FileDemo11{
public static void main(String args[]){
File my = new File("d:" + File.separator) ;// 操作路径,可以有外部参数决定的
print(my) ;
}
public static void print(File file){// 递归调用
if(file!=null){// 判断对象是否为空专
if(file.isDirectory()){// 如果是目录属
File f[] = file.listFiles() ;// 列出全部的文件
if(f!=null){// 判断此目录能否列出
for(int i=0;i<f.length;i++){
print(f[i]) ;// 因为给的路径有可能是目录,所以,继续判断
}
}
}else{
System.out.println(file) ;// 输出路径
}
}
}
};