在我的java程序中,我复制一个文件并删除新文件.
在我的方法中,removeFile()我检查它是否是一个目录:
String fileName = "G:/1310628353186Examples.csv";
File f = new File(fileName);
if (f.isDirectory()) {
System.out.println( "'" + fileName + "' is a directory" );
String[] files = f.list();
if (files != null && files.length > 0)
throw new IllegalArgumentException("Delete: directory not empty: " + fileName);
}
Run Code Online (Sandbox Code Playgroud)
有时我会得到"'G:/1310628353186Examples.csv' is a directory",有时我不会.
当我调试的代码,f.isDirectory()是true和我检查是什么f.isDirectory,调试器说,这是false.
我在Windows 7 Professional上运行Eclipse SDK 3.4.0和JDK 1.6.
我必须编辑名为root.propertis的现有文件并更新它而不保存到另一个文件
以下是样本proprety文件.
root.label.getmore=Mehr Apps
root.msg.apps=Apps
root.label.2.2=Coupons
root.label.35.2=MSNBC
root.label.43.2=PBS Kids
root.label.47.2=Yahoo! Digest
Run Code Online (Sandbox Code Playgroud)
我必须更新文件中的字符串 "root.label.43.2=PBS Kids" to "root.label.43.2=Updated"
但我需要通过repalcing串在同一个文件(root.propertis)保存root.label.43.2=PBS Kids.没有需要更新另一个属性文件中的变化.
我希望收到一个List作为输入,Java显示我没有错误:
List<String> A;
ObjectOutputStream ins = new ObjectOutputStream(soc.getOutputStream());
ins.writeObject(A);
Run Code Online (Sandbox Code Playgroud)
上面的代码执行没有错误,但是这不会:
List<String> ls;
ObjectInputStream in = new ObjectInputStream(soc.getInputStream());
in.readObject(ls);
Run Code Online (Sandbox Code Playgroud)
如果我可以发送List <>,为什么我不能接受它?输出代码的任何原因和建议?
我很好奇最有效的方法是读取文本文件(不要担心大小,它相当小,所以java.io很好),然后将其内容转储到JTextArea显示器中.
例如,我可以以某种方式使用单个字符串中的整个文件,然后使用JTextArea.setText它来显示它,或者我应该逐行读取或字节数组并将它们填充到StringBuffer中,然后将文本区域设置为?
谢谢
我正在通过oracle API java.io.RandomAccessFile上课.
在类中有一个名为read()的方法,它从传递给构造函数的文件中读取数据的字节:
public int read()抛出IOException
从该文件中读取一个字节的数据.该字节以0到255(0x00-0x0ff)范围内的整数形式返回.如果尚未提供输入,此方法将阻止.
尽管RandomAccessFile不是InputStream的子类,但此方法的行为方式与InputStream的InputStream.read()方法完全相同.
返回:数据的下一个字节,如果已到达文件末尾,则返回-1.抛出:IOException - 如果发生I/O错误.如果已达到文件结尾,则不会抛出.
我很困惑,这是否意味着它从传递给构造函数的文件中读取8位数据并将读取的内容转换为int.
有什么建议?
我如何使用FileWriter实际写入文件,然后在记事本上打开它,看看我写了什么?这是我到目前为止所尝试的:
package Experimental;
import java.io.*;
public class IO {
public static void main (String args[]) {
File f = new File("testFile.txt");
//Outputting into a file
try {
PrintWriter filePrint = new PrintWriter(
new BufferedWriter(new FileWriter(f,true))
);
filePrint.println("testing, testing, printing into a file (apparently)");
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
Run Code Online (Sandbox Code Playgroud) 我试图删除只有文件但没有子文件夹但没有成功的文件夹.
File rowFolder = new File(folderPath);
String[] files = rowFolder.list();
for (String file : files){
File deleteFile = new File(file);
System.out.println("deleting file -"+deleteFile.getName());
deleteFile.delete();
}
System.out.println("deleting folder -"+rowFolder.getName());
rowFolder.delete();
Run Code Online (Sandbox Code Playgroud)
deleting file -testing.pdf
deleting file -app_json.json
deleting file -photo.jpg
deleting folder -bundle_folder
Run Code Online (Sandbox Code Playgroud)
代码不会删除任何文件夹或任何文件.这是为什么?
我显然正面临无限循环while(input.hasNext()),如下面的代码所示
File file = new File("data.txt");
Scanner input = new Scanner(file);
int sum = 0;
while (input.hasNext()) {
if (input.hasNextInt()) {
sum += input.nextInt();
}
}
System.out.println(sum);
Run Code Online (Sandbox Code Playgroud)
一些相关的问题解释了为什么如果输入流是System.in,它总是返回true ,但是我正在扫描File.
请让我知道我哪里出错了.
我正在尝试计算唯一整数值的总和(空格分隔的位置).
编辑:
经验教训,
input.hasNext()不会将指针移动到下一行,因此扫描仪不会超过任何输入.正如在这个问题的答案以及这里所解释的那样.
我有一个Java包含大量XML文件(> 500)的项目.在运行时读取此文件会导致性能问题.
是否有一个选项可以将所有XML文件加载到RAM并从那里读取而不是磁盘?
我知道有像RamDisk这样的产品, 但这个是商业工具.
我可以使用任何现有的Java API /库将XML文件复制到主内存并从主内存中读取吗?
我正在阅读《用Java思考》一书,该书解释了该java.nio.*软件包,并说NIO比使用传统IO流读取和写入文件要快。为什么?
我已经查看了以下信息:
IO流是面向字节的,传统IO处理单元是字节,而NIO处理单元是块(字节阵列),但是我认为传统IO也可以通过BufferedFile *直接处理块(字节阵列),而传统IO也具有直接方法处理字节数组
private native int readBytes(byte b[], int off, int len) throws IOException;
Run Code Online (Sandbox Code Playgroud)IO正在阻止读取,NIO可以是非阻止,但是我发现文件NIO只能是非阻止,那么NIO没有优势。
我认为使用NIO通常是使用NIO的其他优点,例如:
transferTo()/transferFrom()
Run Code Online (Sandbox Code Playgroud)那么,什么时候应该使用NIO进行文件读写?为什么它比传统的IO更快?正确的使用方法是什么?我应该仅在读写文件时使用IO还是NIO吗?