java讀取inputstream
⑴ java如何將一個InputStream寫入文件
java通過InputStream讀取和寫入文件操作實例代碼
1. File to InputStream
File file = new File("file.xml");
InputStream inputStream = new FileInputStream(file);
2.InputStream to File
InputStream inputStream = new FileInputStream("file.xml");
OutputStream outputStream = new FileOutputStream("file-new.xml");
int bytesWritten = 0;
int byteCount = 0;
byte[] bytes = new byte[1024];
while ((byteCount = inputStream.read(bytes)) != -1)
{
outputStream.write(bytes, bytesWritten, byteCount);
bytesWritten += byteCount;
}
inputStream.close();
outputStream.close();
⑵ java 中inputstream 和outputstream 怎麼進行文件的讀取寫入的
你可以這樣理解:
FileInputStream in = new FileInputStream("E:\\a.zip");
FileInputStream 顧名思義,就是寫入。這句話將a.zip做編碼後放到in,要用a.zip的時候就使用in讀出來。
FileOutputStream os = new FileOutputStream("e:\\b.zip");
FileOutputStream顧名思義,就是讀出,讀出的話就要指定讀出的目的地,e:\\b.zip便是目的地。
while(in.read(bt) != -1)
{
os.write(bt);
}
這段代碼就是從in中讀出編碼後的文件內容,然後通過os寫入b.zip.
⑶ java讀取國產uos壓縮的zip文件,zipFile.getInputStream為空怎麼解決呀
通過Java來讀取UOS格式的國產文檔的話,是有API可以來讀取的,你可以通過Maven倉庫來在下載spire.xls.jar, 在pom.xml中配置依賴:
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>
</repository></repositories>
<dependencies>
<dependency>
<groupId> e-iceblue </groupId>
<artifactId>spire.xls</artifactId>
<version>12.7.4</version>
</dependency>
</dependencies>
⑷ java 中配置文件路徑讀取使用FileReader和InputStream區別和用法
一、按數據來源(去向)分類:
1、是文件: FileInputStream, FileOutputStream, FileReader, FileWriter
2、是byte[]:ByteArrayInputStream, ByteArrayOutputStream
3、是Char[]: CharArrayReader, CharArrayWriter
4、是String: StringBufferInputStream, StringReader, StringWriter
5、網路數據流:InputStream, OutputStream, Reader, Writer
二、按是否格式化輸出分:
1、要格式化輸出:PrintStream, PrintWriter
三、按是否要緩沖分:
1、要緩沖:BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter
四、按數據格式分:
1、二進制格式(只要不能確定是純文本的): InputStream, OutputStream及其所有帶Stream結束的子類
2、純文本格式(含純英文與漢字或其他編碼方式);Reader, Writer及其所有帶Reader, Writer的子類
五、按輸入輸出分:
1、輸入:Reader, InputStream類型的子類
2、輸出:Writer, OutputStream類型的子類
六、特殊需要:
1、從Stream到Reader,Writer的轉換類:InputStreamReader, OutputStreamWriter
2、對象輸入輸出:ObjectInputStream, ObjectOutputStream
3、進程間通信:PipeInputStream, PipeOutputStream, PipeReader, PipeWriter
4、合並輸入:SequenceInputStream
5、更特殊的需要:PushbackInputStream, PushbackReader, LineNumberInputStream, LineNumberReader
決定使用哪個類以及它的構造進程的一般准則如下(不考慮特殊需要):
首先,考慮最原始的數據格式是什麼: 原則四
第二,是輸入還是輸出:原則五
第三,是否需要轉換流:原則六第1點
第四,數據來源(去向)是什麼:原則一
第五,是否要緩沖:原則三 (特別註明:一定要注意的是readLine()是否有定義,有什麼比read, write更特殊的輸入或輸出方法)
第六,是否要格式化輸出:原則二
Java中Inputstream與Reader的區別
Reader支持16位的Unicode字元輸出,InputStream支持8位的字元輸出。
Reader和InputStream分別是I/O庫提供的兩套平行獨立的等級機構,
InputStream、OutputStream是用來處理8位元的流,
Reader、Writer是用來處理16位元的流。
而在JAVA語言中,byte類型是8位的,char類型是16位的,所以在處理中文的時候需要用Reader和Writer。
值得說明的是,在這兩種等級機構下,還有一道橋梁InputStreamReader、OutputStreamWriter負責進行InputStream到Reader的適配和由OutputStream到Writer的適配。
java.io.Reader 和 java.io.InputStream 組成了 Java輸入類。Reader 用於讀入16位字元,也就是 Unicode編碼的字元;而 InputStream 用於讀入 ASCII字元和二進制數據。
在 Java中,有不同類型的 Reader 輸入流對應於不同的數據源:
FileReader 用於從文件輸入;
CharArrayReader 用於從程序中的字元數組輸入;
StringReader 用於從程序中的字元串輸入;
PipedReader 用於讀取從另一個線程中的 PipedWriter 寫入管道的數據。
相應的也有不同類型的 InputStream 輸入流對應於不同的數據源:FileInputStream,ByteArrayInputStream,StringBufferInputStream,PipedInputStream。另外,還有兩種沒有對應 Reader 類型的 InputStream 輸入流:
Socket 用於套接字;
URLConnection 用於 URL 連接。
這兩個類使用 getInputStream() 來讀取數據。
相應的,java.io.Writer 和 java.io.OutputStream 也有類似的區別。
⑸ java如何讀取InputStream中的字元串
你可以參考我的例子:
FileInputStream in = new FileInputStream(new File("D:\\Users\\Administrator\\Desktop\\1.txt"));
FileOutputStream out = new FileOutputStream(new File("D:\\Users\\Administrator\\Desktop\\2.txt"));
try
{
int byteread = 0; // 讀取的位元組數
byte[] buffer = new byte[1024];
while ((byteread = in.read(buffer)) != -1) {
out.write(buffer, 0, byteread);
}
}catch (Exception e)
{
e.printStackTrace();
}finally {
in.close();
out.close();
}
⑹ java怎麼獲取inputstream的大小
據指定文件創建FileInputStream,調用available方法返迴文件大小,容量為byte
File file = new File("d:\hello.gif");
FileInputStream fis = null;
try{
fis = new FileInputStream(file);
System.out.println("文件size:"+String.valueOf(fis.available()/1000)+"k");
}catch(IOException e1){
System.out.println("IO出錯!");
}
}catch(FileNotFoundException e2){
System.out.println("找不到指定文件");
}
⑺ java中DataInputStream如何讀取我們控制台的字元串
java中DataInputStream使用構造參數,使用bufferreader,輸入參數system.in就可以讀取控制台的字元串,如下代碼:
importjava.io.BufferedInputStream;
importjava.io.DataInputStream;
importjava.io.IOException;
publicclassceshi{
publicstaticvoidmain(String[]args){
DataInputStreamin=newDataInputStream(newBufferedInputStream(
System.in));//新建DateInputSteam,接收控制台的信息
Strings;
try{
while((s=in.readLine()).length()!=0)
System.out.println(s);//讀取控制台信息,並列印出來
//
}catch(IOExceptione){
e.printStackTrace();
}
}
}
運行結果如下:
⑻ java讀取文件時,InputStream的read(byte[])方法的byte[]的長度不知如何設置,請教大蝦們
那個長度應該只是緩沖區而已,應該不影響結果的。我做的時候一般都設置為1024,即1KB
這個是我部分的成功代碼
inputStream = new BufferedInputStream(new FileInputStream(
downloadFile));
outputStream = new BufferedOutputStream(response
.getOutputStream());
byte[] buffer = new byte[1024];
int readIndex;
while (-1 != (readIndex = inputStream.read(buffer, 0,
buffer.length))) {
outputStream.write(buffer, 0, readIndex);
}
⑼ Java 的 inputStream 讀取文本內容
import java.io.*;
public class Test{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("info.txt")));
String s;
try{
while((s=br.readLine()).length()!=0){
String[] ss = s.split("\\s+");
String no = ss[0];
String name = ss[1];
int grade = Integer.parseInt(ss[2]);
System.out.println("學號:"+no+" "+"姓名:"+name+" "+"成績:"+grade);
}
}catch(Exception e){}
br.close();
}
}
這邊按你的要求,學號,姓名和分數都存儲到對應的變數當中了。
InputStream有使用,但還是轉換成了Reader。
還有一種方法是使用ObjectInputStream和ObjectOutputStream,前提是你的文本文件的內容是空的,然後將對象寫入,如果要讀,那麼再進行讀操作。這種方式存儲在文件中的內容是雜亂無章的,並不是按照:
學號 姓名 成績
這種格式來進行存儲的,但是它確實能夠讀取一個一個的對象。
⑽ java中 為什麼我用輸入流 inputStream 讀取的都是問號
修改「android.txt」文件的編碼為jdk編碼。