如何把目录下文件名写到一个list中去?

angeltw 2011-08-12 02:09:04
好久没写java了,今天有个需求比较急,也来不及研究了,上来请教一下。
把一个目录下的文件名全取到然后写到一个list.txt中去。现在文件名可以全部取到了,放在一个array里面,怎么写到txt文件里呢?急问。最后list.txt里面就是这种格式:

c:\test\abc.out
c:\test\bbb.txt
c:\test\mem.xml


每个文件名要一行,谢谢
...全文
312 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
angeltw 2011-08-15
  • 打赏
  • 举报
回复
非常感谢,准备结贴了~
Java高知社区 2011-08-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fengyun817 的回复:]

调用 writeTxtFile 方法即可

Java code

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Array……
[/Quote]
顶一个
skyWalker_ONLY 2011-08-13
  • 打赏
  • 举报
回复
很多方法啊
molaifeng 2011-08-13
  • 打赏
  • 举报
回复
我也来练练手

import java.io.*;
import java.util.*;

public class ListFiles {
public static void main(String[] args) throws Exception{
File f = new File("F:/java");
BufferedWriter bw = new BufferedWriter(new FileWriter("F:/list.txt"));
List<String> list = new ArrayList<String>();
File[] files = f.listFiles();
for (File file : files) {
if (file.getName().endsWith(".java")) {
list.add(file.getName());
}
}
for (int i = 0;i < list.size(); i++ ) {
bw.write(list.get(i));
bw.newLine();
}
bw.flush();
bw.close();
}
}
molaifeng 2011-08-13
  • 打赏
  • 举报
回复
我也来练练手

import java.io.*;
import java.util.*;

public class ListFiles {
public static void main(String[] args) throws Exception{
File f = new File("F:/java");
BufferedWriter bw = new BufferedWriter(new FileWriter("F:/list.txt"));
List<String> list = new ArrayList<String>();
File[] files = f.listFiles();
for (File file : files) {
if (file.getName().endsWith(".java")) {
list.add(file.getName());
}
}
for (int i = 0;i < list.size(); i++ ) {
bw.write(list.get(i));
bw.newLine();
}
bw.flush();
bw.close();
}
}
flyingZippo 2011-08-13
  • 打赏
  • 举报
回复
printwriter
aotian16 2011-08-12
  • 打赏
  • 举报
回复
学习了
luohuijun619 2011-08-12
  • 打赏
  • 举报
回复
用文件流写进出
FileWriter
fengyun817 2011-08-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 angeltw 的回复:]

非常感谢,有没有办法按照时间顺序把目录下的文件放到list里面?谢谢
[/Quote]

写个比较器

  //按修改日期的比较器
class CompratorByLastModified implements Comparator
{
//实现接口compare方法
public int compare(Object o1, Object o2)
{
File file1 = (File)o1;
File file2 = (File)o2;
long diff = file1.lastModified() - file2.lastModified();
if (diff > 0)
return 1;
else if (diff == 0)
return 0;
else
return -1;
}
public boolean equals(Object obj){
return true;
}

}


然后
File fileRoot = new File(filepath);
if (fileRoot.isDirectory())
{
File[] fileList = fileRoot.listFiles(new FileFilter());
Arrays.sort(fileList,new CompratorByLastModified());//这里排序
//fileList 放入ArrayList 即可
}
liuyuhua0066 2011-08-12
  • 打赏
  • 举报
回复
File有个lastModified方法,可以获得文件最后一次被修改的时间,你可以根据这个时间排列文件。
angeltw 2011-08-12
  • 打赏
  • 举报
回复
非常感谢,有没有办法按照时间顺序把目录下的文件放到list里面?谢谢
liuyuhua0066 2011-08-12
  • 打赏
  • 举报
回复
简单写了个,没有做扩展。

public class Write {

public static void main(String[] args){
List<String> list=new ArrayList<String>();
list.add("c:/test/abc.out");
list.add("c:/test/ddd.txt");
list.add("c:/test/aad.xml");

try {
Writer writer=new FileWriter("c:/list.txt");
for(String str:list){
writer.write(str+System.getProperty("line.separator"));
}
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
jiangbao1982 2011-08-12
  • 打赏
  • 举报
回复
BufferedWriter out = null;
String outFileName = list.txt;
out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(outFileName), "SHIFT-JIS"));
//出力内容を設定する
out.write(SwCommonConstant.CS3D070_TEXT_OPERATION_NAME+","+" "+currentdateTime);
out.newLine();
out.newLine();
out.write(SwCommonConstant.CS3D070_DATE+","+SwCommonConstant.CS3D070_USER_ID+","+SwCommonConstant.CS3D070_OPEOBJ+","+SwCommonConstant.CS3D070_OPETION);
out.newLine();
out.close();
File file = new File(outFileName);
// ファイルを出力する。
InputStream inStream = new FileInputStream(file);
byte[] bytes = new byte[1000];
response.reset();
response.setContentType("bin");
outFileName=new String(outFileName.getBytes("SHIFT-JIS"),"ISO8859-1");
response.addHeader("Content-Disposition", "attachment;filename="
+ outFileName);
int len;
try {
while ((len = inStream.read(bytes)) > 0)
response.getOutputStream().write(bytes, 0, len);
inStream.close();
} catch (IOException e) {
e.printStackTrace();
}

借鉴一下吧,文本写
meran 2011-08-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fengyun817 的回复:]

调用 writeTxtFile 方法即可

Java code

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Array……
[/Quote]
乐于助人啊
fengyun817 2011-08-12
  • 打赏
  • 举报
回复
调用 writeTxtFile 方法即可


import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.ArrayList;


public final class FileUtil {

//删除指定的文件
public static boolean delete(String filepath)
{
File fp = null;
try
{
if (filepath == null || filepath.trim().length() == 0)
{
return false;
}

fp = new File(filepath);
if (!fp.exists())
{
throw new IllegalArgumentException("源文件目录:'"+filepath+"'不存在,请确认目录");
//return false;
}

return fp.delete();
}catch(Exception e)
{
e.printStackTrace();
return false;
}
}

//检查文件是否存在
public static boolean checkFileExist(String filepath) {
if (filepath == null || filepath.trim().length() == 0)
return false;

File fp = new File(filepath);
if (!fp.exists())
return false;
if (!fp.isFile())
return false;

return true;
}
// 向文件写文本内容
public static boolean writeLineFile(RandomAccessFile file, String lineTxt, boolean isRW)
{
boolean result = true;
try
{
String str = lineTxt + "\r\n";
byte[] strTxt = str.getBytes();
if (isRW)
{
file.write(strTxt);
}
} catch (Exception e)
{
e.printStackTrace();
}
return result;
}
//读文本文件内容,全部读取,放在数组里
public static ArrayList<String> readTxtFile(String fileName) throws IOException, Exception
{
ArrayList<String> txtList = new ArrayList<String>();
File file = new File(fileName);
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(file));
String tempString = null;
//一次读入一行,直到读入null为文件结束
while ((tempString = reader.readLine()) != null)
{
txtList.add(tempString);
}
} catch (IOException e)
{
e.printStackTrace();
} finally {
if (reader != null){
try
{
reader.close();
} catch (IOException ex)
{
ex.printStackTrace();
}
}
}
return txtList;
}

//写文件方法
public static boolean writeTxtFile(String fileName, ArrayList<String> lineTxt) throws IOException, Exception
{
boolean result = true;
//检查文件是否存在
result = FileUtil.checkFileExist(fileName);
//存在,先删除文件
result = (result) ? FileUtil.delete(fileName) : true;
//打开文件
if (result)
{
RandomAccessFile file = null;
try
{
file = new RandomAccessFile(fileName, "rw");
for (int i = 0; i < lineTxt.size(); i++)
{
//写一行文件内容
result = result && FileUtil.writeLineFile(file, lineTxt.get(i).toString(), true);
}
} catch (Exception e)
{
} finally
{
if(file != null)
try
{
file.close();
} catch (IOException ex)
{
ex.printStackTrace();
}
}
}
return result;
}
}

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧