- 110
- 0
这个程序的功能有计算一个文件夹内.java文件的个数和字符个数。现在假设文件夹里面就只有一个文件。我把文件里面的内容一行一行地读出来存到ArrayList里面,可是当我在parse()里面执行完collectDoc(file),再输出list后发现,就只输出了文件的后半部分,文件的前半部分不知道去哪里了
package counter;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class AnalysisFileNumber {
private int numberOfJavaSourceFiles;
private File directory;
private int countChar;//所有文件的字符数
private ArrayList<String> list;
private Map<String,Integer> map;
private String dirName;
private int countNote;
private int charInNote;
public AnalysisFileNumber(File directory,String dirname) throws Exception{
this.directory = directory;
this.dirName=dirname;
list=new ArrayList<String>();
map=new HashMap<String, Integer>();
this.parse(directory, 1);
//writeDoc();//将结果写入文件
}
private void parse(File dir, int n) throws Exception{
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
parse(file, n + 1); // 递归
}else {
if (file.getName().toLowerCase().endsWith(".java")) {
this.numberOfJavaSourceFiles++;
//将文件存入list中,并计算字符数
collectDoc(file);
}
}
}
}
public void collectDoc(File file) throws Exception{
FileReader reader = new FileReader(file);
BufferedReader br = new BufferedReader(reader);
list.clear();//在收录文件前先清空list
String s = br.readLine();
while(s!=null) {
countChar = countChar+s.length()+1;//字符个数就是字符长度
list.add(s);//list存的是单个文件
// System.out.println(s);
s = br.readLine();
}
for(int i=0;i<list.size();i++) {
System.out.println(list.get(i));
}
br.close();
} - 共 0 条
- 全部回答
-
£九霄★战魂彡 普通会员 1楼
在Java中,ArrayList不支持文件的直接读取和写入,因此如果你试图使用ArrayList存储文件,可能会遇到一些问题。
如果你想在Java中读取文件,你可能需要使用
java.io.FileInputStream和java.io.FileInputStream类。但是,这两个类不能直接与ArrayList交互,所以你需要创建一个FileInputStream的实例,然后使用这个实例将文件内容读取到ArrayList中。以下是一个简单的示例:
```java import java.io.FileInputStream; import java.io.IOException;
public class Main { public static void main(String[] args) { ArrayList
list = new ArrayList (); try { FileInputStream fis = new FileInputStream("file.txt"); String line; while ((line = fis.readLine()) != null) { list.add(line); } fis.close(); } catch (IOException e) { e.printStackTrace(); } // 打印ArrayList for (String item : list) { System.out.println(item); } } } ``` 在这个示例中,我们首先创建了一个
FileInputStream的实例,然后使用readLine方法从文件中读取每一行。然后,我们将每一行添加到ArrayList中。最后,我们打印出ArrayList中的所有元素。如果你尝试将文件内容写入到ArrayList中,你需要先将ArrayList的内容写入到磁盘,然后再将磁盘内容写入到ArrayList中。但是,这需要使用
FileOutputStream和FileWriter类,而不是java.io.FileInputStream和java.io.FileInputStream类。以下是一个简单的示例:
```java import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException;
public class Main { public static void main(String[] args) { ArrayList
list = new ArrayList (); try { FileOutputStream fis = new FileOutputStream("file.txt"); FileWriter writer = new FileWriter("file.txt"); writer.write("Hello, World!"); writer.close(); fis.close(); } catch (IOException e) { e.printStackTrace(); } // 打印ArrayList for (String item : list) { System.out.println(item); } } } ``` 在这个示例中,我们首先创建了一个
FileOutputStream的实例,然后创建了一个FileWriter的实例。然后,我们使用write方法将字符串写入到文件中。最后,我们关闭FileOutputStream和FileWriter。注意,
FileOutputStream和FileWriter的写入模式是"w",而不是"a"。这是因为我们希望将内容写入到文件的最后,而不是覆盖原有的内容。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

