似乎有不同的方法来读取和写入Java中的文件数据.
我想从文件中读取ASCII数据.可能的方式和差异是什么?
我想读取包含空格分隔值的文本文件.值是整数.如何阅读并将其放入数组列表?
以下是文本文件内容的示例:
1 62 4 55 5 6 77
Run Code Online (Sandbox Code Playgroud)
我想把它放在一个arraylist中[1, 62, 4, 55, 5, 6, 77].我怎么能用Java做呢?
我想通过10个线程访问一个大文件(文件大小可能从30 MB到1 GB),然后处理文件中的每一行,并通过10个线程将它们写入另一个文件.如果我只使用一个线程来访问IO,则其他线程被阻止.处理花费一些时间几乎相当于从文件系统中读取一行代码.还有一个约束,输出文件中的数据应与输入文件的数据顺序相同.
我想要你对这个系统的设计有所了解.是否有任何现有的API支持并发访问文件?
写入同一文件也可能导致死锁.
如果我关心时间限制,请建议如何实现这一点.
我正在读一个包含500000行的文件.我正在测试看多个线程如何加速进程....
private void multiThreadRead(int num){
for(int i=1; i<= num; i++) {
new Thread(readIndivColumn(i),""+i).start();
}
}
private Runnable readIndivColumn(final int colNum){
return new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
try {
long startTime = System.currentTimeMillis();
System.out.println("From Thread no:"+colNum+" Start time:"+startTime);
RandomAccessFile raf = new RandomAccessFile("./src/test/test1.csv","r");
String line = "";
//System.out.println("From Thread no:"+colNum);
while((line = raf.readLine()) != null){
//System.out.println(line);
//System.out.println(StatUtils.getCellValue(line, colNum));
}
long elapsedTime = System.currentTimeMillis() - startTime;
String formattedTime = String.format("%d min, %d sec",
TimeUnit.MILLISECONDS.toMinutes(elapsedTime),
TimeUnit.MILLISECONDS.toSeconds(elapsedTime) …Run Code Online (Sandbox Code Playgroud)