這種問題我太熟了,有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) ;// 輸出路徑
}
}
}
};