主要是用到java里面的i/o流。代碼例子如下:
成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網綜合服務,包含不限于網站設計、網站制作、愛民網絡推廣、微信平臺小程序開發(fā)、愛民網絡營銷、愛民企業(yè)策劃、愛民品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)為所有大學生創(chuàng)業(yè)者提供愛民建站搭建服務,24小時服務熱線:18982081108,官方網址:www.cdcxhl.com
import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader; /** * java讀寫文件,復制文件 * 讀取d:/1.txt文件內容,寫入f:/text.txt文件中. * @author young * */public class FileWriterTest { // 讀寫文件 public static void rwFile(){ FileWriter fw = null; BufferedReader br = null; try { fw = new FileWriter("f:\\text.txt", true); br = new BufferedReader(new InputStreamReader( new FileInputStream("d:\\1.txt"), "UTF-8")); String line = null; while ((line = br.readLine()) != null) { System.out.println("文件內容: " + line); fw.write(line); fw.flush(); } br.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (fw != null) { try { fw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } public static void main(String[] args) { rwFile(); }}
首先在D盤新建文件1.txt,輸入任意內容。然后執(zhí)行java代碼即可。
java 中的剪切板
通過操作系統(tǒng)的剪切板,可以實現(xiàn)在不同的程序中拷貝和粘貼數(shù)據(jù)。一些用Java寫的程序例如很多開發(fā)環(huán)境也可以訪問到剪切板,本文就是研究如何在Java程序中讀寫系統(tǒng)剪切板的數(shù)據(jù)。
Java中使用java.awt.datatransfer.Clipboard類來描述剪切板,并把剪切板分為兩種類型:本地和系統(tǒng),本地剪切板使用 Clipborad cp = new Clipboard("clip1"); 來構造;系統(tǒng)剪切板通過
Clipboard sysc = Toolkit.getDefaultToolkit().getSystemClipboard();
獲取,下面我們給出幾個常用的方法用于讀寫剪切板中的文本數(shù)據(jù)以及圖像數(shù)據(jù)
1. 從指定的剪切板中獲取文本內容
protected static String getClipboardText(Clipboard clip) throws Exception{
// 獲取剪切板中的內容
Transferable clipT = clip.getContents(null);
if (clipT != null) {
// 檢查內容是否是文本類型
if (clipT.isDataFlavorSupported(DataFlavor.stringFlavor))
return (String)clipT.getTransferData(DataFlavor.stringFlavor);
}
return null;
}
2. 往剪切板寫文本數(shù)據(jù)
protected static void setClipboardText(Clipboard clip, String writeMe) {
Transferable tText = new StringSelection(writeMe);
clip.setContents(tText, null);
}
3. 從剪切板讀取圖像
public static Image getImageFromClipboard() throws Exception{
Clipboard sysc = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable cc = sysc.getContents(null);
if (cc == null)
return null;
else if(cc.isDataFlavorSupported(DataFlavor.imageFlavor))
return (Image)cc.getTransferData(DataFlavor.imageFlavor);
return null;
}
4. 寫圖像到剪切板
protected static void setClipboardImage2(final Image image) {
Transferable trans = new Transferable(){
public DataFlavor[] getTransferDataFlavors() {
return new DataFlavor[] { DataFlavor.imageFlavor };
}
public boolean isDataFlavorSupported(DataFlavor flavor) {
return DataFlavor.imageFlavor.equals(flavor);
}
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
if(isDataFlavorSupported(flavor))
return image;
throw new UnsupportedFlavorException(flavor);
}
};
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(trans, null);
}
有了這四個方法,你下面可以自己寫一些程序來進行測試,利用它來實現(xiàn)與其他程序結合測試對剪切板數(shù)據(jù)的操作。這里給出一個用于顯示圖像的類,只要把Image實例作為參數(shù)傳入即可。
/*
* Created on 2004-12-23
* 查看圖形的窗口
*/
package javayou.clipboard;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
* @author Winter Lau 用于顯示圖形的窗口
*/
public class ImageViewer extends Frame {
private Image image;
/**
* 顯示一個圖像
* @param viewMe
*/
public ImageViewer(Image viewMe) {
image = viewMe;
MediaTracker mediaTracker = new MediaTracker(this);
mediaTracker.addImage(image, 0);
try {
mediaTracker.waitForID(0);
} catch (InterruptedException ie) {
ie.printStackTrace();
System.exit(1);
}
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
//窗口適應圖像大小
setSize(image.getWidth(null), image.getHeight(null));
//窗口標題
setTitle("Viewing Image from Clipboard");
setVisible(true);
}
public void paint(Graphics graphics) {
graphics.drawImage(image, 0, 0, null);
}
/**
* 用于讀取圖像文件并生成Image對象
*/
public static Image getImageFromFile(String fileName) {
Toolkit toolkit = Toolkit.getDefaultToolkit();
Image image = toolkit.getImage(fileName);
return image;
}
}
復制粘貼實際上是文件的流讀取和寫入可以通過如下方法實現(xiàn):
讀寫是兩個不同的分支,通常都是分開單獨使用的。
可以通過BufferedReader 流的形式進行流緩存,之后通過readLine方法獲取到緩存的內容。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此時獲取到的bre就是整個文件的緩存流
while ((str = bre.readLine())!= null) // 判斷最后一行不存在,為空結束循環(huán)
{
System.out.println(str);//原樣輸出讀到的內容
};
備注: 流用完之后必須close掉,如上面的就應該是:bre.close(),否則bre流會一直存在,直到程序運行結束。
可以通過“FileOutputStream”創(chuàng)建文件實例,之后過“OutputStreamWriter”流的形式進行存儲,舉例:
OutputStreamWriter pw = null;//定義一個流
pw = new OutputStreamWriter(new FileOutputStream(“D:/test.txt”),"GBK");//確認流的輸出文件和編碼格式,此過程創(chuàng)建了“test.txt”實例
pw.write("我是要寫入到記事本文件的內容");//將要寫入文件的內容,可以多次write
pw.close();//關閉流
備注:文件流用完之后必須及時通過close方法關閉,否則會一直處于打開狀態(tài),直至程序停止,增加系統(tǒng)負擔。
test.copy("G:\\G盤寄存資料\\我的文檔1\\音樂課堂.doc","G:\\G盤寄存資料");
請注意上面的有個文件夾名字叫“G盤寄存資料”,你復制的文件后的新文件名也叫“G盤寄存資料”,這樣名字重復了,所以就出錯了。
可以把程序改成這樣的話就行了:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class FileCopy {
public void copy(String src, String dest){//**********
InputStream is=null;
OutputStream os=null;
char ch[]=src.toCharArray();
//************新添加的代碼**********
int pos=0;
for(int i=ch.length-1;i=0;i--)
{
if(ch[i]=='\\')
{
if(ipos)
pos=i;
}
}
String temp=src.substring(pos);
dest=dest+temp;
System.out.println("dest="+dest);
//****************************************
try {
is=new BufferedInputStream(new FileInputStream(src));
os=new BufferedOutputStream(new FileOutputStream(dest));
byte[] b=new byte[256];
int len=0;
String str=null;
StringBuilder sb=new StringBuilder();
try {
while((len=is.read(b))!=-1){
os.write(b,0,len);
}
os.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(is!=null){
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
if(os!=null){
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
FileCopy test=new FileCopy();
test.copy("G:\\G盤寄存資料\\我的文檔1\\hello.txt","G:\\G盤寄存資料");//++++++++++++++++++++++
}
}