java 循环读取一个指定文件夹下的所有文件,提供大致代码的思路吧,谢谢~

java 循环读取一个指定文件夹下的所有文件,提供大致代码的思路吧,谢谢~,第1张

public static List<File> getFiles(String path){

    File root = new File(path);

    List<File> files = new ArrayList<File>();

    if(!rootisDirectory()){

    filesadd(root);

    }else{

     File[] subFiles = rootlistFiles();

     for(File f : subFiles){

     filesaddAll(getFiles(fgetAbsolutePath()));

     }    

    }

    return files;

}

public static void main(String[] args) {

    List<File> files = getFiles("D:\\usr\\local\\java\\jdk160_30");

    for(File f : files){

    Systemoutprintln(fgetName());

    }

}

大概就是这样了,没有做异常处理,自己看着办~

java读取文件方法大全

一、多种方式读文件内容

1、按字节读取文件内容

2、按字符读取文件内容

3、按行读取文件内容

4、随机读取文件内容

Java代码

1 import javaioBufferedReader;

2 import javaioFile;

3 import javaioFileInputStream;

4 import javaioFileReader;

5 import javaioIOException;

6 import javaioInputStream;

7 import javaioInputStreamReader;

8 import javaioRandomAccessFile;

9 import javaioReader;

10

11 public class ReadFromFile {

12 /

13 以字节为单位读取文件,常用于读二进制文件,如、声音、影像等文件。

14

15 @param fileName

16 文件的名

17 /

18 public static void readFileByBytes(String fileName) {

19 File file = new File(fileName);

20 InputStream in = null;

21 try {

22 Systemoutprintln("以字节为单位读取文件内容,一次读一个字节:");

23 // 一次读一个字节

24 in = new FileInputStream(file);

25 int tempbyte;

26 while ((tempbyte = inread()) != -1) {

27 Systemoutwrite(tempbyte);

28 }

29 inclose();

30 } catch (IOException e) {

31 eprintStackTrace();

32 return;

33 }

34 try {

35 Systemoutprintln("以字节为单位读取文件内容,一次读多个字节:");

36 // 一次读多个字节

37 byte[] tempbytes = new byte[100];

38 int byteread = 0;

39 in = new FileInputStream(fileName);

40 ReadFromFileshowAvailableBytes(in);

41 // 读入多个字节到字节数组中,byteread为一次读入的字节数

42 while ((byteread = inread(tempbytes)) != -1) {

43 Systemoutwrite(tempbytes, 0, byteread);

44 }

45 } catch (Exception e1) {

46 e1printStackTrace();

47 } finally {

48 if (in != null) {

49 try {

50 inclose();

51 } catch (IOException e1) {

52 }

53 }

54 }

55 }

56

57 /

58 以字符为单位读取文件,常用于读文本,数字等类型的文件

59

60 @param fileName

61 文件名

62 /

63 public static void readFileByChars(String fileName) {

64 File file = new File(fileName);

65 Reader reader = null;

66 try {

67 Systemoutprintln("以字符为单位读取文件内容,一次读一个字节:");

68 // 一次读一个字符

69 reader = new InputStreamReader(new FileInputStream(file));

70 int tempchar;

71 while ((tempchar = readerread()) != -1) {

72 // 对于windows下,\r\n这两个字符在一起时,表示一个换行。

73 // 但如果这两个字符分开显示时,会换两次行。

74 // 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。

75 if (((char) tempchar) != '\r') {

76 Systemoutprint((char) tempchar);

77 }

78 }

79 readerclose();

80 } catch (Exception e) {

81 eprintStackTrace();

82 }

83 try {

84 Systemoutprintln("以字符为单位读取文件内容,一次读多个字节:");

85 // 一次读多个字符

86 char[] tempchars = new char[30];

87 int charread = 0;

88 reader = new InputStreamReader(new FileInputStream(fileName));

89 // 读入多个字符到字符数组中,charread为一次读取字符数

90 while ((charread = readerread(tempchars)) != -1) {

91 // 同样屏蔽掉\r不显示

92 if ((charread == tempcharslength)

93 && (tempchars[tempcharslength - 1] != '\r')) {

94 Systemoutprint(tempchars);

95 } else {

96 for (int i = 0; i < charread; i++) {

97 if (tempchars[i] == '\r') {

98 continue;

99 } else {

100 Systemoutprint(tempchars[i]);

101 }

102 }

103 }

104 }

105

106 } catch (Exception e1) {

107 e1printStackTrace();

108 } finally {

109 if (reader != null) {

110 try {

111 readerclose();

112 } catch (IOException e1) {

113 }

114 }

115 }

116 }

117

118 /

119 以行为单位读取文件,常用于读面向行的格式化文件

120

121 @param fileName

122 文件名

123 /

124 public static void readFileByLines(String fileName) {

125 File file = new File(fileName);

126 BufferedReader reader = null;

127 try {

128 Systemoutprintln("以行为单位读取文件内容,一次读一整行:");

129 reader = new BufferedReader(new FileReader(file));

130 String tempString = null;

131 int line = 1;

132 // 一次读入一行,直到读入null为文件结束

133 while ((tempString = readerreadLine()) != null) {

134 // 显示行号

135 Systemoutprintln("line " + line + ": " + tempString);

136 line++;

137 }

138 readerclose();

139 } catch (IOException e) {

140 eprintStackTrace();

141 } finally {

142 if (reader != null) {

143 try {

144 readerclose();

145 } catch (IOException e1) {

146 }

147 }

148 }

149 }

150

151 /

152 随机读取文件内容

153

154 @param fileName

155 文件名

156 /

157 public static void readFileByRandomAccess(String fileName) {

158 RandomAccessFile randomFile = null;

159 try {

160 Systemoutprintln("随机读取一段文件内容:");

161 // 打开一个随机访问文件流,按只读方式

162 randomFile = new RandomAccessFile(fileName, "r");

163 // 文件长度,字节数

164 long fileLength = randomFilelength();

165 // 读文件的起始位置

166 int beginIndex = (fileLength > 4) 4 : 0;

167 // 将读文件的开始位置移到beginIndex位置。

168 randomFileseek(beginIndex);

169 byte[] bytes = new byte[10];

170 int byteread = 0;

171 // 一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。

172 // 将一次读取的字节数赋给byteread

173 while ((byteread = randomFileread(bytes)) != -1) {

174 Systemoutwrite(bytes, 0, byteread);

175 }

176 } catch (IOException e) {

177 eprintStackTrace();

178 } finally {

179 if (randomFile != null) {

180 try {

181 randomFileclose();

182 } catch (IOException e1) {

183 }

184 }

185 }

186 }

187

188 /

189 显示输入流中还剩的字节数

190

191 @param in

192 /

193 private static void showAvailableBytes(InputStream in) {

194 try {

195 Systemoutprintln("当前字节输入流中的字节数为:" + inavailable());

196 } catch (IOException e) {

197 eprintStackTrace();

198 }

199 }

200

201 public static void main(String[] args) {

202 String fileName = "C:/temp/newTemptxt";

203 ReadFromFilereadFileByBytes(fileName);

204 ReadFromFilereadFileByChars(fileName);

205 ReadFromFilereadFileByLines(fileName);

206 ReadFromFilereadFileByRandomAccess(fileName);

207 }

208 }

二、将内容追加到文件尾部

1 import javaioFileWriter;

2 import javaioIOException;

3 import javaioRandomAccessFile;

4

5 /

6 将内容追加到文件尾部

7 /

8 public class AppendToFile {

9

10 /

11 A方法追加文件:使用RandomAccessFile

12 @param fileName 文件名

13 @param content 追加的内容

14 /

15 public static void appendMethodA(String fileName, String content) {

16 try {

17 // 打开一个随机访问文件流,按读写方式

18 RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");

19 // 文件长度,字节数

20 long fileLength = randomFilelength();

21 //将写文件指针移到文件尾。

22 randomFileseek(fileLength);

23 randomFilewriteBytes(content);

24 randomFileclose();

25 } catch (IOException e) {

26 eprintStackTrace();

27 }

28 }

29

30 /

31 B方法追加文件:使用FileWriter

32 @param fileName

33 @param content

34 /

35 public static void appendMethodB(String fileName, String content) {

36 try {

37 //打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件

38 FileWriter writer = new FileWriter(fileName, true);

39 writerwrite(content);

40 writerclose();

41 } catch (IOException e) {

42 eprintStackTrace();

43 }

44 }

45

46 public static void main(String[] args) {

47 String fileName = "C:/temp/newTemptxt";

48 String content = "new append!";

49 //按方法A追加文件

50 AppendToFileappendMethodA(fileName, content);

51 AppendToFileappendMethodA(fileName, "append end \n");

52 //显示文件内容

53 ReadFromFilereadFileByLines(fileName);

54 //按方法B追加文件

55 AppendToFileappendMethodB(fileName, content);

56 AppendToFileappendMethodB(fileName, "append end \n");

57 //显示文件内容

58 ReadFromFilereadFileByLines(fileName);

59 }

60 }

根据文件名的后缀,把它分离出来就可以了

不知道你是实现B/S还是C/S,但是不管是那一种,在传文件的内容之前,应该可以先传回文件的名字和后缀名。

对于B/S在传回的数据中,在最前面有文件的基本信息,包括文件名。对于C/S就更方便,可以自己先传回文件名和后缀名。

使用流读取就可以了,给你个例子,如下:

public class ReaderFileLine {

public static String getFileContent1(String path) {

StringBuilder sb = new StringBuilder();

try {

File file = new File(path);

InputStreamReader read = new InputStreamReader(new FileInputStream(file), "UTF-8");

BufferedReader reader = new BufferedReader(read);

String line;

while((line = readerreadLine()) != null) {

sbappend(line);

}

} catch (UnsupportedEncodingException e) {

eprintStackTrace();

} catch (FileNotFoundException e) {

eprintStackTrace();

} catch (IOException e) {

eprintStackTrace();

}

return sbtoString();

}

public static void main(String[] args) {

Systemoutprintln(getFileContent1("D:\\ntpcfg"));

}

}

eprintStackTrace();}return result;}}在标准的J2SE中,实现LZ的需求,支持使用RandomAccessFile类Java code RandomAccessFile r =new RandomAccessFile(new File("c:/1txt", "r"));//只读方式打开文件rseek(100);//指定下一次的开始位置byte[] bs =newbyte[1024]; rread(bs); rreadChar(); rreadInt();//读取一个整数

以上就是关于java 循环读取一个指定文件夹下的所有文件,提供大致代码的思路吧,谢谢~全部的内容,包括:java 循环读取一个指定文件夹下的所有文件,提供大致代码的思路吧,谢谢~、java文件如何读取、java 传输 获取文件类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9827982.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存