帆软帮助文档代码合集。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

133 lines
4.6 KiB

package com.fr.data;
import com.fr.cache.Attachment;
import com.fr.data.impl.SubmitJobValue;
import com.fr.general.FArray;
import com.fr.general.FRLogger;
import com.fr.script.Calculator;
import com.fr.stable.xml.FRFile;
import com.fr.stable.xml.XMLPrintWriter;
import com.fr.stable.xml.XMLableReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author fanruan
*/
public class Commit3 implements SubmitJob {
private Object attach;
/**
* 定义文件路径
*/
private SubmitJobValue filePath;
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
@Override
public void doJob(Calculator ca) {
FRLogger.getLogger().info("begin to upload file...");
final Object attachO = attach;
if (attachO instanceof FArray && ((FArray) attachO).length() != 0) {
new Thread() {
@Override
public void run() {
int i;
FArray attachmentList = (FArray) attachO;
for (i = 0; i < attachmentList.length(); i++) {
if (!(attachmentList.elementAt(i) instanceof Attachment)) {
continue;
} else {
FRLogger.getLogger().info("filePath.value:" + filePath.getValue().toString());
FRLogger.getLogger().info("filePath.valueState:" + filePath.getValueState() +
"注:valueState 0,1,2,3 分别表示 默认值,插入行,值改变,删除行");
String FilePath = filePath.getValue().toString();
String FileName = ((Attachment) (attachmentList.elementAt(i))).getFilename();
String Path = FilePath + "\\" + FileName;
File fileDir = new File(FilePath);
if (!fileDir.exists()) {
fileDir.mkdirs();
}
try {
//新建文件夹,并且写入内
mkfile(FilePath, FileName, new ByteArrayInputStream(
((Attachment) (attachmentList.elementAt(i))).getBytes()));
} catch (Exception e) {
Logger.getLogger("FR").log(Level.WARNING,
e.getMessage() + "/nmkfileerror", e);
}
}
}
}
}.start();
} else if (attach instanceof FRFile) {
String filepath = filePath.getValue().toString();
String filename = ((FRFile) attach).getFileName();
File fileDir = new File(filepath);
if (!fileDir.exists()) {
fileDir.mkdirs();
}
try {
//新建文件夹,并且写入内
mkfile(filepath, filename, new ByteArrayInputStream(
((FRFile) attach).getBytes()));
} catch (Exception e) {
Logger.getLogger("FR").log(Level.WARNING,
e.getMessage() + "/nmkfileerror", e);
}
}
}
private static void mkfile(String path, String filename, InputStream source) throws IOException {
File fileout = new File(path, filename);
// 检查是否存在
if (fileout.exists()) {
// 删除文件
fileout.delete();
FRLogger.getLogger().info("old file deleted");
}
// 在当前目录下建立一个名为FileName的文件
if (fileout.createNewFile()) {
FRLogger.getLogger().info(path + filename + "created!!");
}
FileOutputStream outputStream = new FileOutputStream(fileout);
byte[] bytes = new byte[1024];
int read = source.read(bytes);
//把source写入新建的文件
while (read != -1) {
outputStream.write(bytes, 0, read);
outputStream.flush();
read = source.read(bytes);
}
outputStream.close();
}
@Override
public void readXML(XMLableReader reader) {
}
@Override
public void writeXML(XMLPrintWriter writer) {
}
@Override
public void doFinish(Calculator arg0) {
}
@Override
public String getJobType() {
return null;
}
}