2014-08-28 83 views
-1

我的目標是從文件中使用BufferedReader從字節中獲取字符串,但我可以獲取字符串,但有些時候結果是'帶字節的字符串',因此文件被損壞。 我用readline得到第一行,但它工作,但有一段時間字符串來的字節。 下面是代碼我試圖做到這一點從字節獲取第一行字符與出字節

public static void main(String[] args) throws IOException { 


InputStream inStream = null; 
    OutputStream outStream = null; 
    String line; 
    BufferedReader reader; 


    File afile = new File(
      "snake2.jpg"); 

    File bfile = new File(
      "snake.jpg"); 
    File file=new File("E://snake.txt"); 

    // for stream reading and writing..... 
    inStream = new FileInputStream(afile); 


    outStream = new FileOutputStream(bfile); 
    OutputStream txt=new FileOutputStream(file); 
    // create byte array..... 
    ByteArrayOutputStream f = new ByteArrayOutputStream(); 

    reader = new BufferedReader(new InputStreamReader(inStream)); 
    line = reader.readLine(); 
+0

去低級別'read'和測試逐字節查看是否有字符。 – 2014-08-28 07:07:50

+0

@ScaryWombat你能告訴我一個例子嗎? – 2014-08-28 07:08:45

+0

可能是您的文件包含字符 – SparkOn 2014-08-28 07:11:16

回答

0

我覺得你implemetation適合於文本,而不是二進制文件:readLine似乎不適合一個jpg文件,使用read代替。 以此爲例related question

+0

我想從該字節取文本文件 – 2014-08-28 07:15:49

+0

我不確定要理解,但您可以通過Arrays.toString(data.toByteArray())將'data'字節轉換爲字符串' – Coconop 2014-08-28 07:18:29

+0

我是在字節內寫入文本'第一行'和其他結束代碼它取出第一行並使真實文件如此多次文本帶有一些字節,因此文件被損壞 – 2014-08-28 07:18:55

1

使用的FileInputStream讀你可以在時間和測試一個字節,如果它是一個char或不

inStream = new FileInputStream(afile); 

int ch; 
while ((ch = inStream.read()) != -1) 
{ 
    if (ch >= 32 && ch <= 126) out.write (ch); // see ascii table 

}