你好,java的API中提供了用于对象输入输出文件的操作,实例代码如下:
公司主营业务:网站制作、成都做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联公司推出黄岛免费做网站回馈大家。
定义单词类如下(注意:你定义的类要实现Serializable接口)
public class Words implements Serializable {
private int size;
private String[] words;
public Words(){};
public Words(String...strs){
this.words = strs;
this.size = strs.length;
}
@Override
public String toString() {
return "Words{" +
"size=" + size +
", words=" + Arrays.toString(words) +
'}';
}
}
2. 对象输入输出api测试类
public class ObjIOTest {
public static void main(String[] args) {
String path = "d:/myIOTest.txt";
ObjIOTest objIOTest = new ObjIOTest();
Words words = new Words("hello", "my", "dear", "friend");
try {
objIOTest.writeObject(path,words);
Words wordsFromFile = (Words)objIOTest.readObject(path);
System.out.println(wordsFromFile.toString());
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
//java serialize a object to file
public void writeObject(String path,Object map) throws IOException{
File f=new File(path);
FileOutputStream out=new FileOutputStream(f);
ObjectOutputStream objwrite=new ObjectOutputStream(out);
objwrite.writeObject(map);
objwrite.flush();
objwrite.close();
}
// read the object from the file
public Object readObject(String path) throws IOException, ClassNotFoundException{
FileInputStream in=new FileInputStream(path);
ObjectInputStream objread=new ObjectInputStream(in);
Object map=objread.readObject();
objread.close();
return map;
}
}
把两段代码拷贝到一个包下即可运行了,希望您的问题得到解答
/**
* 读写指定文件或者读写指定某一个文件夹下的全部文件(不包括文件夹)
* @throws Exception
*/
public static void moveFile() throws Exception {
Scanner scan = new Scanner(System.in);
System.out.println("请输入源路径:");//输入源文件地址,可以是文件夹,可以是具体某个文件
String uDisk = scan.nextLine();
File file = new File(uDisk);//获得读取文件
if ((file.exists())) {//当文件存在
System.out.println("请输入目标路径:");//文件复制目标路径
String targetFolder = scan.nextLine();
File target = new File(targetFolder);//获得写入文件
if (!target.exists()) {
if (!target.mkdir()) {
throw new Exception("创建目标目录失败");
}
} else if (!target.isDirectory()) {
throw new Exception("与目标目录同名的文件已经存在");
}
File[] temp = null;
if(file.listFiles()==null || file.listFiles().length=0){
temp=new File[]{file};//输入的源路径指定文件,将文件添加到文件数组中
}else{
temp = file.listFiles();//如果输入的源路径是文件夹,则获取文件夹下文件的个数
}
if ((temp != null) (temp.length 0)) {//文件数组temp有值
int i = 0;
for (int length = temp.length; i length; i++) {//循环文件数组
if (!temp[i].isDirectory()) {
String fileName = temp[i].getName();
File t = new File(targetFolder + File.separator
+ fileName);//创建输出文件
if (!t.createNewFile()) {
throw new Exception("创建输出文件失败");
}
FileOutputStream out = new FileOutputStream(t);//创建文件输出流
FileInputStream in = new FileInputStream(temp[i]);//创建文件输入流
byte[] buffer = new byte[256];
while (in.read(buffer) 0) {//循环输入流,直到输入流无数据
out.write(buffer);//写入文件
}
}
}
}
}
}
调用例子:
public static void main(String[] args) throws Exception {
moveFile();
}
常用的输入语句是:
输入字符串:new Scanner(System.in).next();
输入整数:new Scanner(System.in).nextInt();
输入小数:new Scanner(System.in).nextDouble();
常用的输出语句:
换行输出: System.out.println(变量或字符串);
非换行输出: System.out.print(变量或字符串);
换行输出错误提示(默认是红字):System.err.println(变量或字符串);
不换行输出错误提示(默认是红字): System.err.print(变量或字符串));