公共文件FileUtils看起来很酷,我无法相信它们不能被附加到文件中.
File file = new File(path);
FileUtils.writeLines(file, printStats(new DateTime(), headerRequired));
Run Code Online (Sandbox Code Playgroud)
以上只是每次都替换文件的内容,我只想继续标记这些东西,就像这段代码一样.
fw = new FileWriter(file, true);
try{
for(String line : printStats(new DateTime(), headerRequired)){
fw.write(line + "\n");
}
}
finally{
fw.close();
}
Run Code Online (Sandbox Code Playgroud)
我搜索过javadoc但什么也没找到!我错过了什么?
要将数据发送到我的FTP服务器上的文件,我需要创建一个自定义的InputStream实现,逐行读取数据库数据,将其转换为CSV并通过其read()方法发布它:从数据库中,我得到一个List<Application>对象数据.对于每个Application对象,我想在CSV文件中创建一行.
我的想法是在构造函数中加载所有数据,然后覆盖read方法.我是否需要覆盖所有InputStream的方法?我尝试谷歌搜索一些例子,但没有成功 - 你最终能给我一个链接吗?
我正在编写一个程序,我正在使用其他公司的库从他们的网站下载一些报告.我想在将这些报告写入文件之前解析这些报告,因为如果它们符合某些条件,我想忽略它们.
问题是,他们的方法叫做download(),返回一个java.io.Reader.唯一可用的方法是
int read(char[] cbuf);
Run Code Online (Sandbox Code Playgroud)
打印出这个返回的数组会给我带来无意义的字符.我想能够识别我正在使用的字符集或将其转换为字节数组,但我无法弄清楚如何做到这一点.我试过了
//retrievedFile is my Reader object
char[] cbuf = new char[2048];
int numChars = retrievedFile.read(cbuf);
//I've tried other character sets, too
new String(cbuf).getBytes("UTF-8");
Run Code Online (Sandbox Code Playgroud)
而且我害怕向一个更有用的读者倾斜,因为我无法确定它是否会起作用.有什么建议?
当我说它打印出"毫无意义的人物"时,我并不是说它看起来像Jon Skeet给出的例子.这很难描述,因为我现在不在我的机器上,但我认为这是一个编码问题.字符似乎具有与报告外观类似的缩进和结构.我星期二回来后会立即尝试这些建议(我只是一名实习生,所以我没有费心设置远程帐户或任何东西).
我一直在尝试做一个需要可附加的ObjectOutputStream的小项目.我已经经历了几个解决方案,我发现这一点似乎首先解决了我的问题.但是在我的项目的进一步发展中,我开始遇到意外的异常.以下是我的课程.
public class PPAccount implements Serializable
{
private Profile profile;
private String email;
private float accountBal;
private boolean isActivated;
private String activationCode;
private ArrayList<Transaction> transactions;
//a few functions
}
public class PPRestrictedAccount extends PPAccount {
private String parentEmail;
private float withdrawLimit;
//a few functions
}
public class PPBusinessAccount extends PPAccount {
private ArrayList <PPRestrictedAccount> accountOperators;
//a few functions
}
public class PPStudentAccount extends PPAccount {
private String parentEmail;
//a few functions
}
Run Code Online (Sandbox Code Playgroud)
我观察到的是,使用这个我已经覆盖了ObjectOutputStream并在我将对象附加到文件时使用它.但是如果我写的话会发生什么:
PPBusinessAccount首先,重复任意次数...然后写PPAccount …
我想为我的报告创建一个HTML文件.可以使用创建报告中的内容BufferedWriter#write(String)
File f = new File("source.htm");
BufferedWriter bw = new BufferedWriter(new FileWriter(f));
bw.write("Content");
Run Code Online (Sandbox Code Playgroud)
或者通过使用 DataOutputStream#writeBytes(String)
File f = new File("source.htm");
DataOutputStream dosReport = new DataOutputStream(new FileOutputStream(f));
dosReport.wrtiteBytes("Content");
Run Code Online (Sandbox Code Playgroud)
其中一个比另一个好吗?为什么会这样?
我的同事和我正在讨论该File.delete()方法如何在Java中工作.
在我们的代码中:
File outFile = new File("/dir/name.ext");
if(outFile.exists())
outFile.delete();
FileInputStream inStream = new FileInputStream(outFile);
WriteFile.writeFile(inStream); // Writes the actual file
Run Code Online (Sandbox Code Playgroud)
writeFile出于安全原因,我不能包含此处的整个方法体,但在创建所需的数据库对象后,它将执行以下操作:
BufferedOutputStream out = null;
Object[] args = {"an_encrypted_data_clob_name_in_the_database"};
Class[] argTypes = {Class.forName("java.lang.String")};
Object result = WSCallHelper.jdbcCall(null, rs, "getCLOB", args, argTypes);
CLOB clob = (CLOB)result;
out = new BufferedOutputStream(clob.getAsciiOutputStream());
byte[] buffer = new byte[512];
int bytesRead = -1;
while((bytesRead = inStream.read(buffer)) > -1)
out.write(buffer, 0, bytesRead);
Run Code Online (Sandbox Code Playgroud)
我知道这是一个有点不清楚,但它的一般要点是,它创建AsciiOutputStream的Clob(是的,它应该是一个Clob),并将其写入inStream是从以前的方法传递的对象.
他们确信这不会因为File.delete(); …
我是一名学习我的文件IO技能的学生,我遇到了使用ObjectInputStream从文件中读取对象的问题.代码一直抛出一个InvalidClassException,我无法找到代码是如何在线投掷或通过反复试验.这是我的代码:
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class ReadFromFile {
String filename;
List<Object> os;
public ReadFromFile(String filename) {
this.filename = filename;
os = new ArrayList<>();
}
public Object[] readObject() {
try {
FileInputStream fis = new FileInputStream(filename);
ObjectInputStream ois = new ObjectInputStream(fis);
System.out.print("reading\n");
while (true) {
os.add(ois.readObject());
System.out.print("read one\n");
}
} catch (EOFException e) {
return os.toArray();
} catch (FileNotFoundException e) {
System.out.print("File not found\n");
return os.toArray();
} catch (ClassNotFoundException e) {
System.out.print("Class not found\n");
return os.toArray();
} catch …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个程序来从文件夹中读取每个文件,在读取文件中的内容后,该文件应该被删除。我可以编写程序来分别从文件夹中读取文件并从文件夹中删除文件,但无法将它们集成到一个程序中。
我在 Windows 中安装了网络驱动器(samba 服务器)。
我在该驱动器中有一个文件,我想在 Java 程序中读取该文件。
在我尝试使用以下方法读取文件之前:
Paths.get(basePath, fileName).toFile()
Run Code Online (Sandbox Code Playgroud)
但由于文件不存在而失败。文件就在那里,路径也很好。
然后我尝试了以下有效的代码:
String path = Paths.get(basePath, fileName).toAbsolutePath().toString()
File file = new File(path)
Run Code Online (Sandbox Code Playgroud)
两种方法有什么区别吗?是否需要任何安全设置?
更新
因此,在我使用第二部分(有效的部分)之后,我回到原来的部分(原样)来验证调试,这次它有效了。我用同一目录中的另一个文件尝试了它,但失败了。看起来很奇怪,但我会检查更多。
java.nio.Files.createSymbolicLink用于创建符号链接。我可以通过 SDK 创建引用链接(类似于cp --reflink=[WHEN]),还是需要执行到底层操作系统?