⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 huang.txt

📁 模拟在线考试系统
💻 TXT
字号:
编写一个程序,将一个目录及其子目录下的所有txt类型的文本文件中的内容和并到若干个新文件中,当第一个新产生的文件中存储的内容达到1M bytes时,剩下的内容存储到第二个文件中,依次往下,新产生的文本文件名依次为 1.txt, 2.txt.......



太麻烦,分数太低。怎么成反比了?

--------------------------------------------------------------------------------

写好了,准备给多少分?

--------------------------------------------------------------------------------

能给多少给多少,还请赐教

--------------------------------------------------------------------------------

关注

--------------------------------------------------------------------------------

要多多给分啊,否则,下次不帮忙啦!

--------------------------------------------------------------------------------

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;


public class Files {
String srcdir = "src";
String descdir = "desc";

File srcfile = null;
FileInputStream fis = null;
FileOutputStream fos = null;
int descfilenum = 1;
long size = 0;
final long MaxSize = 1024*1000;//1M

public Files() {
}

public Files(String src, String desc) {
srcdir = src;
descdir = desc;
}

public void go() throws Exception {
srcfile = new File(srcdir);
if ((!srcfile.exists()) || (!srcfile.isDirectory())) {
throw new Exception("\"" + srcdir + "\" dir does not exist!");
}

File descfile = new File(descdir);
if ((!descfile.exists()) || (!srcfile.isDirectory())) {
descfile.mkdir();
}
fos = new FileOutputStream(descdir + "\\" + descfilenum + ".txt");
nest(srcdir);
fos.close();
}

public void nest(String dir) throws Exception {
srcfile = new File(dir);
String[] files = srcfile.list();
boolean havesubdir = false;
//处理文件
for (int i=0; i<files.length; i++) {
srcfile = new File(dir + "\\" + files[i]);
if (srcfile.isDirectory()) {
havesubdir = true;
continue;
} else {
fis = new FileInputStream(srcfile);
System.out.println(srcfile.getPath());
int n;
byte[] buf = new byte[4096];
while ((n = fis.read(buf, 0, buf.length)) != -1) {
write(buf, n);
}
}
}
//没有子目录,返回
if (!havesubdir) {
return;
}
//处理文件夹
for (int i=0; i<files.length; i++) {
srcfile = new File(dir + "\\" + files[i]);
if (srcfile.isFile()) {
continue;
}
nest(srcfile.getPath());
}

}

public void write(byte[] buffer, int end) throws Exception {
int p = 0;
while (p < end) {
if (size >= MaxSize) {
descfilenum++;
size = 0;
fos.close();
fos = new FileOutputStream(descdir + "\\" + descfilenum + ".txt"); 
}

int len = end - p;
if ((size+len) > MaxSize) {
int m = (int)(MaxSize - size);
fos.write(buffer, p, m);
p += m;
size += m;
} else {
fos.write(buffer, p, end-p);
size += (end - p);
p = end;
}
}
}


public static void main(String[] args) {
try {
Files f = new Files("src", "dest");
f.go();
} catch (Exception e) {
e.printStackTrace();
}
}

}


--------------------------------------------------------------------------------

楼上的搞那么复杂,还要高分。。。。。
看看兄弟我这个
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;

public class TestRead {

/**
* @param args
*/
static int fileNumber=1;
public void fileOp(File file) 
{

if(file.isDirectory())
{
File[] files=file.listFiles();
for(int i=0;i<files.length;i++)
{
File tempFile=files[i];
if(tempFile.isFile())
{
if(tempFile.getName().lastIndexOf(".txt")>=0)
{
copyData(tempFile);
System.out.println(fileNumber);
}
}
else
{
fileOp(tempFile);
}
}
}
}

private void copyData(File file)
{
try
{
File tempWriteFile=new File("/temp/"+String.valueOf(fileNumber)+".txt");
BufferedReader br=new BufferedReader(new FileReader(file));
BufferedWriter bw=null;

String tempBr=null;
tempBr=br.readLine();
while(tempBr!=null)
{
if(tempWriteFile.length()>=1024)
{
fileNumber++;
}
tempWriteFile=new File("/temp/"+String.valueOf(fileNumber)+".txt");
bw=new BufferedWriter(new FileWriter(tempWriteFile,true));
bw.write(tempBr + "\r\n");
tempBr=br.readLine();
}
bw.close();
br.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}

public static void main(String[] args)
{
File file=new File("/");
(new TestRead()).fileOp(file);
}
}


--------------------------------------------------------------------------------

第一个程序只要写.txt类型的怎么改啊

--------------------------------------------------------------------------------

更正(之前有点)bug:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;

public class TestRead {

/**
* @param args
*/
private static int fileNumber=1;
private File tempWriteFile=null;
private BufferedWriter bw=null;
public void fileOp(File file,String temp)
{

if(file.isDirectory()&&!file.equals(new File(temp)))
{
File[] files=file.listFiles();
if(files!=null)
{
for(int i=0;i<files.length;i++)
{
File tempFile=files[i];
if(tempFile.isFile())
{
if(tempFile.getName().lastIndexOf(".txt")>=0)
{
copyData(tempFile,temp);
System.out.println(tempFile.getAbsolutePath());
}
}
else
{
fileOp(tempFile,temp);
}
}
}
}
}

private void copyData(File file,String temp)
{
try
{
this.tempWriteFile=new File(temp+"/"+String.valueOf(fileNumber)+".txt");
BufferedReader br=new BufferedReader(new FileReader(file));
this.bw=new BufferedWriter(new FileWriter(tempWriteFile,true));

String tempBr=null;
tempBr=br.readLine();
while(tempBr!=null)
{
if(this.tempWriteFile.length()+tempBr.length()>=1024*1024)
{
this.bw.close();
fileNumber++;
this.tempWriteFile=new File(temp+"/"+String.valueOf(fileNumber)+".txt");
this.bw=new BufferedWriter(new FileWriter(tempWriteFile,true));
}
bw.write(tempBr + "\r\n");
tempBr=br.readLine();
}
bw.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}

public static void main(String[] args)
{
File file=new File("c:/");
(new TestRead()).fileOp(file,"e:/test/temp");
System.out.print("Finished!");
}
}



--------------------------------------------------------------------------------

同时建议搂主,如果要想提高io访问效率的话,还是用
java.io.BufferedReader;
java.io.BufferedWriter;
比较好

--------------------------------------------------------------------------------

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;

public class TestRead {

/**
* @param args
*/
private static int fileNumber=1;
private File tempWriteFile=null;
private BufferedWriter bw=null;
public void fileOp(File file,String temp)
{

if(file.isDirectory()&&!file.equals(new File(temp)))
{
File[] files=file.listFiles();
if(files!=null)
{
for(int i=0;i<files.length;i++)
{
File tempFile=files[i];
if(tempFile.isFile())
{
if(tempFile.getName().lastIndexOf(".txt")>=0)
{
copyData(tempFile,temp);
System.out.println(tempFile.getAbsolutePath());
}
}
else
{
fileOp(tempFile,temp);
}
}
}
}
}

private void copyData(File file,String temp)
{
try
{
this.tempWriteFile=new File(temp+"/"+String.valueOf(fileNumber)+".txt");
BufferedReader br=new BufferedReader(new FileReader(file));
this.bw=new BufferedWriter(new FileWriter(tempWriteFile,true));

String tempBr=null;
tempBr=br.readLine();
while(tempBr!=null)
{
if(this.tempWriteFile.length()+tempBr.length()>=1024*1024)
{
this.bw.close();
fileNumber++;
this.tempWriteFile=new File(temp+"/"+String.valueOf(fileNumber)+".txt");
this.bw=new BufferedWriter(new FileWriter(tempWriteFile,true));
}
bw.write(tempBr + "\r\n");
tempBr=br.readLine();
}
bw.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}

public static void main(String[] args)
{
String savedDoc="e:/temp";
String srcDoc="e:/";
File file=new File(srcDoc);
File savedDocFile=new File(savedDoc);
if(savedDocFile.exists())
{
File[] fileTemp;
fileTemp=savedDocFile.listFiles();
for(int i=0;i<fileTemp.length;i++)
{
fileTemp[i].delete();
}
}
else
{
savedDocFile.mkdir(); 
}
(new TestRead()).fileOp(file,savedDoc);
System.out.print("Finished!");
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -