我正在关注一些教程视频并学习如何使用 java 读取文件。在此示例中,讲师创建一个大小为 100 的 char 数组,然后使用 FileReader 类读取文本文件并将字符放入 char 数组中,然后 System.out 该数组到控制台。我的代码与讲师相同,但我的输出包含方形符号来填充 100 个字符数组,而讲师输出正确显示字符数组。
这是代码片段和输出
import java.io.*;
public class MSReader
{
public static void main(String[] args)
{
// the character stream lasses when working
// with char or strings [ reader, writer]
char[] array = new char[100];
try
{
Reader reader = new FileReader(
"C:\\Users\\ricky\\OneDrive\\Desktop - Lenovo Laptop\\test\\InputStreamExample.txt");
// check if reader is ready
System.out.println("Ready: " + reader.ready());
// reading the characters
reader.read(array);
System.out.println("Data in the stream: ");
System.out.println(array); …Run Code Online (Sandbox Code Playgroud) 我正在寻找用于处理文本文件的快速类,并能轻松读取不同的对象(诸如NextInt32,NextDouble,NextLine等方法)。你能给我一些建议吗?
编辑:在我的情况下BinaryReader是坏类。我的数据格式不是二进制。我有像
1 2 3
FirstToken NextToken
1.23 2,34
Run Code Online (Sandbox Code Playgroud)
我想用如下代码读取该文件:
int a = FileReader.NextInt32();
int b = FileReader.NextInt32();
int c = FileReader.NextInt32();
int d = FileReader.NextString();
int e = FileReader.NextString();
int f = FileReader.NextDouble();
int g = FileReader.NextDouble();
Run Code Online (Sandbox Code Playgroud)
Edit2:我正在从Java寻找模拟扫描仪
您好我的代码中有这个
File file = new File("words.txt");
Scanner scanFile = new Scanner(new FileReader(file));
ArrayList<String> words = new ArrayList<String>();
String theWord;
while (scanFile.hasNext()){
theWord = scanFile.next();
words.add(theWord);
}
Run Code Online (Sandbox Code Playgroud)
但出于某种原因,我得到了一个
java.io.FileNotFoundException
我将words.txt文件放在与所有.java文件相同的文件夹中
我究竟做错了什么?谢谢!
美好时光!
我的Android应用程序试图使用通常的Java组合读取简单的文本文件
FileReader fr = new FileReader("file:///android_asset/example.txt");
BufferedReader bfr = new BufferedReader(fr);
Run Code Online (Sandbox Code Playgroud)
但是,无论我做什么,我都会找到File not Found exeption,尽管此目录中还有另一个html文件,并且正确显示在WebView中.
所以,我的问题是:
FileReader可用于简单阅读文本文件或我必须使用InputStream?
我知道正确的方法是
BufferedReader br = new BufferedReader(FileReader(file));
Run Code Online (Sandbox Code Playgroud)
但是我在Java API中检查了FileReader类的方法,并且它有一个read()返回字符读取的方法.但这对我不起作用.我正在读取包含这行文本的文件:"我正在读取文件",并将其打印到屏幕上,但是当我运行程序时,它会为每个字符打印等效的ASCII代码.
这是我的代码:
String lectura = "";
try{
lectura = String.valueOf(fr.read());
} catch(IOException ioex){
ioex.printStackTrace();
}
while((Integer.parseInt(lectura)) != -1){
System.out.print(lectura);
try{
lectura = String.valueOf(fr.read());
} catch(IOException ioex){
ioex.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud) 我想从文件中读取文本并将其返回到函数中.所以这是我的代码的重要部分:
function getFileRequest(id, contentType, callback) {
var val = "x";
if (window.File && window.FileReader && window.FileList && window.Blob) {
var element = document.getElementById(id);
var file = element.files[0];
if(file != null) {
if(file.type.match("text/xml")){
var r;
r = new FileReader();
r.onload = function (e) {
val = e.target.result;
}
r.readAsText(file);
}
else
alert("Wrong file format");
}
} else {
alert('The File APIs are not fully supported by your browser.');
}
alert(val);
if(val == null)
return "";
else
return getRequestBody(id,contentType,val);
}
Run Code Online (Sandbox Code Playgroud)
我想将文本传递给名为"val"的变量.但是,至少在我看来,alert(val)总是显示默认的"x",因为可能它不等待onload函数被执行.我是对的吗?那么如何才能访问该文本?有没有办法等待执行?
我知道" fileReader"和" fileWriter"可以从套接字之间的磁盘传输中读写文件.但是,我想从套接字接收文件并将它们写入缓存而不是磁盘.
有功能可以做到吗?
很难找到明确的答案,我95%肯定我想要达到的目标是不可能的,但是这里有:
前:
我有一个multipart/form-data上传表格.用户选择文件,但必须先登录才能发布表单.用户可以通过Twitter登录.如果他在选择文件后这样做,由于重定向到Twitter或从Twitter重定向,文件输入将为空.
返回:
我有一个PHP脚本使用该$_FILES数组将上传的文件移动到其最终目的地.(我的问题的解决方案是在重定向到Twitter之前将文件保存到临时文件夹,但我目前无法设置它).
问题:
我可以使用FileSystem API将所选文件存储在localStorage中(至少在现代浏览器中).但我显然不能把它放回输入元素中.现在我不知所措:有没有办法将我的localStorage中的文件导入到PHP $ _FILES数组中?
我有一段时间没有碰过Java,所以我对一些细节有点生疏.
我试图从一个充满数字的文件中读取所有自己的行.文件中的第一个数字告诉我文件中有多少其他数字,所以我可以适当调整我的数组大小.我试图获取这些数字,并将它们放在一个int数组中,但我在return语句中不断收到"错误:可变数据可能尚未初始化".我知道这必须是简单的事情,但我不能为我的生活找出我做错的简单事情.
public static int[] numbers(String filename)
{
int[] data;
try
{
FileReader input = new FileReader(filename);
BufferedReader buffer = new BufferedReader(input);
int arraySize = Integer.parseInt(buffer.readLine());
data = new int[arraySize];
for (int x = 0; x < arraySize; x++)
{
data[x] = Integer.parseInt(buffer.readLine());
}
buffer.close();
}
catch(Exception e)
{
System.out.println("Error reading: "+e.getMessage());
}
return data;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试平均一个包含1000万个数字的文件,每行只有一个数字。我创建了一个名为getAverage()的方法,该方法返回一个double。这是代码:
public double promedioDouble() throws IOException
{
double adder = 0;
int counter = 0;
try{
file = new FileReader(filePath);
reader = new BufferedReader(file);
while(reader.readLine()!=null)
{
adder+=Double.parseDouble(reader.readLine());
counter++;
}
}
catch (IOException e)
{
System.out.println("cant read");
}
finally {
if (file != null) file.close();
}
return adder/counter;
}
Run Code Online (Sandbox Code Playgroud)
我打印了计数器,结果显示为5.000.000,我不知道为什么读者无法读取文件中包含的1000万个数字,而它只能读取一半。我需要帮助。
filereader ×10
java ×6
arrays ×2
javascript ×2
.net ×1
android ×1
c# ×1
char ×1
file ×1
filewriter ×1
onload ×1
php ×1
text-files ×1
wait ×1