你好,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();
}
呃,時隔幾年,不知道你解決問題沒有。首先應該明白,System.out.println(OBJ)會自動調用OBJ.toString()方法。查閱官方文檔表示,ByteArrayInputStream類中重寫了toString( )方法,Converts the buffer's contents into a string decoding bytes using the platform's default character set.即 “使用平臺的默認字符集將緩沖區的內容轉換為字符串解碼字節。
但是 FileOutputStream類中并未重寫toString( ) 。使用的是從Object類中繼承下來的。所以你能看到 obj@xxx 格式的輸出。
當前文章:java代碼流,java io流代碼
網頁路徑:http://vcdvsql.cn/article6/hssgog.html
成都網站建設公司_創新互聯,為您提供外貿建站、全網營銷推廣、網站改版、服務器托管、域名注冊、靜態網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯