为什么我们在以下代码段中不需要i++
:
import java.io.*;
class PracIn
{
public static void main(String args[])
{
try
{
System.out.println("Reading From File.....\n\n");
/* You MUST create First File myOwnFile.txt in your machine */
/* Add some Text on that File */
FileInputStream fin=new FileInputStream("myOwnFile.txt");
int i=0;
while((i=fin.read())!=-1)
{
System.out.print((char)i); /* why we don't need i++*/
}
}
catch(Exception e)
{
}
}
}
逻辑背后的理论是什么?
答案 0 :(得分:3)
i
这里不是循环索引,所以不需要增加它。为文件中的每个字节分配i
。
答案 1 :(得分:1)
read()方法基本上返回"数据的下一个字节,如果到达文件的末尾,则返回-1;"它被分配给我。 while循环将i的值检查为条件语句。这就是为什么我们不需要增加i的值(i的值取决于FileInputStream的read()函数的返回值)。一旦条件成立,循环将结束;这意味着i的值将为-1(到达文件的末尾)。
有关详细说明,请浏览以下链接。在这里,您可以找到read()方法的详细信息。希望这能回答你的问题。
https://docs.oracle.com/javase/7/docs/api/java/io/FileInputStream.html
答案 2 :(得分:1)
这是我用来从文件中读取行并将其存储在字符串数组中的代码片段,希望这对您有用:)
public class user {
public static void main(String x[]) throws IOException{
BufferedReader b=new BufferedReader(new FileReader("<path to file>"));
String[] user=new String[30];
String line="";
while ((line = b.readLine()) != null) {
user[i]=line;
System.out.println(user[1]);
i++;
}
}
}
答案 3 :(得分:0)
为什么你认为你需要做<script src="http://urbanior.grapesdigital.com/skin/frontend/rwd/default/js/owl.carousel.js"></script>
<script src="http://urbanior.grapesdigital.com/skin/frontend/rwd/default/js/jquery.bxslider.js"></script>
<script>
jQuery(document).ready(function($){
$('.bxslider').bxSlider1({
mode: 'fade'
});
$(".testi").owlCarousel({
items : 5,
itemsCustom : false,
itemsDesktop : [2000, 1],
itemsDesktopSmall : [979, 1],
itemsTablet : [768, 1],
itemsTabletSmall : false,
itemsMobile : [479, 1],
});
});
</script>
。
i++
在这里你一次读一个角色。此外,它不像文件中的指针,每次读取字符时都需要递增。 int i;
i=fin.read();
方法读取字符并返回它。当遇到文件末尾时,它将返回read()
。因为在读取每个字符时,它们的ASCII值都会返回,因此您需要转换回-1
并打印它。
以下是来自char
类的read()
方法的实现。它使用本机实现从文件中读取字节。
FileInputStream
进一步了解原生public int read() throws IOException {
return read0();
}
private native int read0() throws IOException;
:native read()